]> granicus.if.org Git - esp-idf/commitdiff
spi_flash: fix memory leak when spi_flash_mmap arguments are invalid
authorIvan Grokhotkov <ivan@espressif.com>
Tue, 28 Feb 2017 07:11:54 +0000 (15:11 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 28 Feb 2017 07:11:54 +0000 (15:11 +0800)
Check src_addr and size first, then allocate new_entry.

components/spi_flash/flash_mmap.c

index 8d284c60a4563c623f38f7b80dde27315a478212..d67bdc85b2286994fa56724d284482d9287aa26a 100644 (file)
@@ -93,16 +93,16 @@ esp_err_t IRAM_ATTR spi_flash_mmap(size_t src_addr, size_t size, spi_flash_mmap_
 {
     esp_err_t ret;
     bool did_flush, need_flush = false;
-    mmap_entry_t* new_entry = (mmap_entry_t*) malloc(sizeof(mmap_entry_t));
-    if (new_entry == 0) {
-        return ESP_ERR_NO_MEM;
-    }
     if (src_addr & 0xffff) {
         return ESP_ERR_INVALID_ARG;
     }
     if (src_addr + size > g_rom_flashchip.chip_size) {
         return ESP_ERR_INVALID_ARG;
     }
+    mmap_entry_t* new_entry = (mmap_entry_t*) malloc(sizeof(mmap_entry_t));
+    if (new_entry == 0) {
+        return ESP_ERR_NO_MEM;
+    }
 
     spi_flash_disable_interrupts_caches_and_other_cpu();