From: Konstantin Kondrashov Date: Tue, 24 Jul 2018 05:09:32 +0000 (+0800) Subject: bootloader: Fix issue - bs->app_count is zero but ota_data have valid entry X-Git-Tag: v3.2-beta1~392^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8c808c2d9a1a024a5419711b794cd59ce6dc6c20;p=esp-idf bootloader: Fix issue - bs->app_count is zero but ota_data have valid entry If we have the partition table without any ota_apps but in ota_data have valide entry, in this case we get an error(hang). This commit fix this case. If bs->app_count is zero when selecting the factory app. Closes https://github.com/espressif/esp-idf/issues/2218 --- diff --git a/components/bootloader_support/src/bootloader_utility.c b/components/bootloader_support/src/bootloader_utility.c index b079e90cc0..e68f8d0d83 100644 --- a/components/bootloader_support/src/bootloader_utility.c +++ b/components/bootloader_support/src/bootloader_utility.c @@ -211,8 +211,8 @@ int bootloader_utility_get_selected_boot_partition(const bootloader_state_t *bs) bootloader_munmap(ota_select_map); ESP_LOGD(TAG, "OTA sequence values A 0x%08x B 0x%08x", sa.ota_seq, sb.ota_seq); - if(sa.ota_seq == UINT32_MAX && sb.ota_seq == UINT32_MAX) { - ESP_LOGD(TAG, "OTA sequence numbers both empty (all-0xFF)"); + if ((sa.ota_seq == UINT32_MAX && sb.ota_seq == UINT32_MAX) || (bs->app_count == 0)) { + ESP_LOGD(TAG, "OTA sequence numbers both empty (all-0xFF) or partition table does not have bootable ota_apps (app_count=%d)", bs->app_count); if (bs->factory.offset != 0) { ESP_LOGI(TAG, "Defaulting to factory image"); return FACTORY_INDEX;