diff --git a/components/espcoredump/src/core_dump_common.c b/components/espcoredump/src/core_dump_common.c index 7e00c1b40..1ac358947 100644 --- a/components/espcoredump/src/core_dump_common.c +++ b/components/espcoredump/src/core_dump_common.c @@ -192,7 +192,13 @@ esp_err_t esp_core_dump_image_get(size_t* out_addr, size_t *out_size) uint32_t *dw = (uint32_t *)core_data; *out_size = *dw; 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 err = esp_partition_mmap(core_part, 0, *out_size, SPI_FLASH_MMAP_DATA, &core_data, &core_data_handle);