spi_flash, newlib: fix NULL pointer dereference on OOM

https://pvs-studio.com/en/blog/posts/cpp/0790/#ID88049D3FA2
Reported in https://github.com/espressif/esp-idf/issues/6440
This commit is contained in:
Ivan Grokhotkov 2022-03-14 18:16:42 +01:00
parent 98e19b3355
commit 4aa2719e13
No known key found for this signature in database
GPG Key ID: 1E050E141B280628
2 changed files with 10 additions and 0 deletions

View File

@ -139,6 +139,10 @@ void esp_newlib_init(void)
_GLOBAL_REENT = &s_reent;
environ = malloc(sizeof(char*));
if (environ == 0) {
// if allocation fails this early in startup process, there's nothing else other than to panic.
abort();
}
environ[0] = NULL;
esp_newlib_locks_init();

View File

@ -234,6 +234,9 @@ static esp_partition_iterator_opaque_t *iterator_create(esp_partition_type_t typ
{
esp_partition_iterator_opaque_t *it =
(esp_partition_iterator_opaque_t *) malloc(sizeof(esp_partition_iterator_opaque_t));
if (it == NULL) {
return NULL;
}
it->type = type;
it->subtype = subtype;
it->label = label;
@ -256,6 +259,9 @@ esp_partition_iterator_t esp_partition_find(esp_partition_type_t type,
// create an iterator pointing to the start of the list
// (next item will be the first one)
esp_partition_iterator_t it = iterator_create(type, subtype, label);
if (it == NULL) {
return NULL;
}
// advance iterator to the next item which matches constraints
it = esp_partition_next(it);
// if nothing found, it == NULL and iterator has been released