]> granicus.if.org Git - esp-idf/commitdiff
bootloader: Fix issue - bs->app_count is zero but ota_data have valid entry
authorKonstantin Kondrashov <konstantin@espressif.com>
Tue, 24 Jul 2018 05:09:32 +0000 (13:09 +0800)
committerKonstantin Kondrashov <konstantin@espressif.com>
Tue, 24 Jul 2018 05:09:32 +0000 (13:09 +0800)
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

components/bootloader_support/src/bootloader_utility.c

index b079e90cc0fcf5ca7d977d5c9d06ba86de75b967..e68f8d0d837e5391bb8ec93061d7d05e8c297eb0 100644 (file)
@@ -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;