summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSander Vanheule2023-02-03 22:03:15 +0000
committerSander Vanheule2023-03-12 12:35:51 +0000
commit201a6c01ee0965c0562fe65e496f33eefac12c0a (patch)
treedbb91a88dfd382ffc234fefd2c2eebdf82efe524
parente7233d229c2c204563a8c70231b34ebb2a197400 (diff)
downloadfirmware-utils-201a6c01ee0965c0562fe65e496f33eefac12c0a.tar.gz
tplink-safeloader: stricter free_image_partition()
Instead of only free()-ing the allocated data block, also clear the name and size of a payload entry to indicate that it's become invalid. Signed-off-by: Sander Vanheule <sander@svanheule.net>
-rw-r--r--src/tplink-safeloader.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c
index d9e1605..6c4689c 100644
--- a/src/tplink-safeloader.c
+++ b/src/tplink-safeloader.c
@@ -3156,8 +3156,15 @@ static void set_partition_names(struct device_info *info)
}
/** Frees an image partition */
-static void free_image_partition(struct image_partition_entry entry) {
- free(entry.data);
+static void free_image_partition(struct image_partition_entry *entry)
+{
+ void *data = entry->data;
+
+ entry->name = NULL;
+ entry->size = 0;
+ entry->data = NULL;
+
+ free(data);
}
static time_t source_date_epoch = -1;
@@ -3598,7 +3605,7 @@ static void build_image(const char *output,
free(image);
for (i = 0; parts[i].name; i++)
- free_image_partition(parts[i]);
+ free_image_partition(&parts[i]);
}
/** Usage output */