From 9fd3e62ab43ebccaaa761d4e37e68585a140cfeb Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Mon, 9 Oct 2023 14:51:37 +0100 Subject: [PATCH] Free keys on error #1373 --- src/MQTTPersistenceDefault.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MQTTPersistenceDefault.c b/src/MQTTPersistenceDefault.c index ee9de994..fe3bd17b 100644 --- a/src/MQTTPersistenceDefault.c +++ b/src/MQTTPersistenceDefault.c @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2020 IBM Corp. + * Copyright (c) 2009, 2023 IBM Corp. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 @@ -835,12 +835,18 @@ int keysUnix(char *dirname, char ***keys, int *nkeys) if (!temp) { + int n = 0; + for (n = 0; n < i; n++) + free(fkeys[n]); free(fkeys); rc = PAHO_MEMORY_ERROR; goto exit; } if (snprintf(temp, allocsize, "%s/%s", dirname, dir_entry->d_name) >= allocsize) { + int n = 0; + for (n = 0; n < i; n++) + free(fkeys[n]); free(temp); free(fkeys); rc = MQTTCLIENT_PERSISTENCE_ERROR; @@ -850,6 +856,9 @@ int keysUnix(char *dirname, char ***keys, int *nkeys) { if ((fkeys[i] = malloc(strlen(dir_entry->d_name) + 1)) == NULL) { + int n = 0; + for (n = 0; n < i; n++) + free(fkeys[n]); free(temp); free(fkeys); rc = PAHO_MEMORY_ERROR;