Explorar o código

espcoredump: fix error reported for blank partition

aleks %!s(int64=5) %!d(string=hai) anos
pai
achega
59c6afda95
Modificáronse 1 ficheiros con 9 adicións e 1 borrados
  1. 9 1
      components/espcoredump/src/core_dump_common.c

+ 9 - 1
components/espcoredump/src/core_dump_common.c

@@ -191,7 +191,15 @@ esp_err_t esp_core_dump_image_get(size_t* out_addr, size_t *out_size)
     uint32_t *dw = (uint32_t *)core_data;
     uint32_t *dw = (uint32_t *)core_data;
     *out_size = *dw;
     *out_size = *dw;
     spi_flash_munmap(core_data_handle);
     spi_flash_munmap(core_data_handle);
-
+    
+    if (*out_size == 0xFFFFFFFF) {
+        ESP_LOGD(TAG, "Blank core dump partition!");
+        return ESP_ERR_INVALID_SIZE;
+    } else if ((*out_size < sizeof(uint32_t)) || (*out_size > core_part->size)) {
+        ESP_LOGE(TAG, "Incorrect size of core dump image: %d", *out_size);
+        return ESP_ERR_INVALID_SIZE;
+    }
+    
     // remap full core dump with CRC
     // remap full core dump with CRC
     err = esp_partition_mmap(core_part, 0, *out_size,
     err = esp_partition_mmap(core_part, 0, *out_size,
                              SPI_FLASH_MMAP_DATA, &core_data, &core_data_handle);
                              SPI_FLASH_MMAP_DATA, &core_data, &core_data_handle);