From da723c373b722d534e9472d430751b43589cb507 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 8 Feb 2023 22:08:31 +0000 Subject: [PATCH] Fix db_dump crash on corrupt file. Closes oss-fuzz #55789 --- apps/db_dump/db_dump.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/db_dump/db_dump.c b/apps/db_dump/db_dump.c index 787ca594..011a5d21 100644 --- a/apps/db_dump/db_dump.c +++ b/apps/db_dump/db_dump.c @@ -143,7 +143,7 @@ static int dump__client_chunk_process(FILE *db_fd, uint32_t length) { struct P_client chunk; int rc = 0; - struct client_data *cc; + struct client_data *cc = NULL; client_count++; @@ -159,7 +159,7 @@ static int dump__client_chunk_process(FILE *db_fd, uint32_t length) return rc; } - if(client_stats){ + if(client_stats && chunk.clientid){ cc = calloc(1, sizeof(struct client_data)); if(!cc){ fprintf(stderr, "Error: Out of memory.\n"); @@ -199,7 +199,7 @@ static int dump__client_msg_chunk_process(FILE *db_fd, uint32_t length) return rc; } - if(client_stats){ + if(client_stats && chunk.clientid){ HASH_FIND(hh_id, clients_by_id, chunk.clientid, strlen(chunk.clientid), cc); if(cc){ cc->messages++; @@ -352,7 +352,7 @@ static int dump__sub_chunk_process(FILE *db_fd, uint32_t length) return rc; } - if(client_stats){ + if(client_stats && chunk.clientid){ HASH_FIND(hh_id, clients_by_id, chunk.clientid, strlen(chunk.clientid), cc); if(cc){ cc->subscriptions++;