From 7279e481911f282b06e095b84144f1e1570e6947 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Fri, 6 Jan 2017 00:44:17 +0000 Subject: [PATCH] [316] Don't error on zero length persistence files. Closes #316. Bug: https://github.com/eclipse/mosquitto/issues/316 --- ChangeLog.txt | 1 + src/persist.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 45fbd33d..c1d6cbfc 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -2,6 +2,7 @@ Broker: - Fix crash when "lazy" type bridge attempts to reconnect. Closes #259. - maximum_connections now applies to websockets listeners. Closes #271. - Allow bridges to use TLS with IPv6. +- Don't error on zero length persistence files. Closes #316. Client library: - Clients can now use TLS with IPv6. diff --git a/src/persist.c b/src/persist.c index 47c27ae7..dad6830f 100644 --- a/src/persist.c +++ b/src/persist.c @@ -813,7 +813,14 @@ int mqtt3_db_restore(struct mosquitto_db *db) fptr = _mosquitto_fopen(db->config->persistence_filepath, "rb"); if(fptr == NULL) return MOSQ_ERR_SUCCESS; - read_e(fptr, &header, 15); + rlen = fread(&header, 1, 15, fptr); + if(rlen == 0){ + fclose(fptr); + _mosquitto_log_printf(NULL, MOSQ_LOG_WARNING, "Warning: Persistence file is empty."); + return 0; + }else if(rlen != 15){ + goto error; + } if(!memcmp(header, magic, 15)){ // Restore DB as normal read_e(fptr, &crc, sizeof(uint32_t));