bootloader: Do not obfuscate RAM if we are not doing image validation
No need to take this step if we are not doing image validation. The obfuscation only buys us a tiny bit of "security" anyways since the main parts of flash are memory mapped, too. This saves a little bit of wake-up time when waking up from deep sleep when the BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP option is set. Signed-off-by: Tim Nordell <tim.nordell@nimbelink.com>
This commit is contained in:
parent
1e32fa2cf7
commit
82984f0539
|
@ -225,7 +225,7 @@ static esp_err_t image_load(esp_image_load_mode_t mode, const esp_partition_pos_
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BOOTLOADER_BUILD
|
#ifdef BOOTLOADER_BUILD
|
||||||
if (do_load) { // Need to deobfuscate RAM
|
if (do_load && ram_obfs_value[0] != 0 && ram_obfs_value[1] != 0) { // Need to deobfuscate RAM
|
||||||
for (int i = 0; i < data->image.segment_count; i++) {
|
for (int i = 0; i < data->image.segment_count; i++) {
|
||||||
uint32_t load_addr = data->segments[i].load_addr;
|
uint32_t load_addr = data->segments[i].load_addr;
|
||||||
if (should_load(load_addr)) {
|
if (should_load(load_addr)) {
|
||||||
|
@ -403,6 +403,12 @@ static esp_err_t process_segment_data(intptr_t load_addr, uint32_t data_addr, ui
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (checksum == NULL && sha_handle == NULL) {
|
||||||
|
memcpy((void *)load_addr, data, data_len);
|
||||||
|
bootloader_munmap(data);
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef BOOTLOADER_BUILD
|
#ifdef BOOTLOADER_BUILD
|
||||||
// Set up the obfuscation value to use for loading
|
// Set up the obfuscation value to use for loading
|
||||||
while (ram_obfs_value[0] == 0 || ram_obfs_value[1] == 0) {
|
while (ram_obfs_value[0] == 0 || ram_obfs_value[1] == 0) {
|
||||||
|
|
Loading…
Reference in a new issue