From 17177e352bbae4799d689712b2bd6fa1ebe183a3 Mon Sep 17 00:00:00 2001 From: mharizanov Date: Tue, 4 Sep 2018 15:52:11 +0300 Subject: [PATCH] examples: Fixing possible memory leak, not freeing "run_time" prior to returning Merges https://github.com/espressif/esp-idf/pull/2367 --- .../storage/nvs_rw_blob/main/nvs_blob_example_main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/storage/nvs_rw_blob/main/nvs_blob_example_main.c b/examples/storage/nvs_rw_blob/main/nvs_blob_example_main.c index e5bd6eabe..410ced3f0 100644 --- a/examples/storage/nvs_rw_blob/main/nvs_blob_example_main.c +++ b/examples/storage/nvs_rw_blob/main/nvs_blob_example_main.c @@ -80,7 +80,10 @@ esp_err_t save_run_time(void) uint32_t* run_time = malloc(required_size + sizeof(uint32_t)); if (required_size > 0) { err = nvs_get_blob(my_handle, "run_time", run_time, &required_size); - if (err != ESP_OK) return err; + if (err != ESP_OK) { + free(run_time); + return err; + } } // Write value including previously saved blob if available @@ -131,7 +134,10 @@ esp_err_t print_what_saved(void) } else { uint32_t* run_time = malloc(required_size); err = nvs_get_blob(my_handle, "run_time", run_time, &required_size); - if (err != ESP_OK) return err; + if (err != ESP_OK) { + free(run_time); + return err; + } for (int i = 0; i < required_size / sizeof(uint32_t); i++) { printf("%d: %d\n", i + 1, run_time[i]); }