Просмотр исходного кода

const-ness fixes

Validate size parameter of esp_loader_flash_write

Changes due to PR review.
Dirk Kaar 2 лет назад
Родитель
Сommit
832a911d68
5 измененных файлов с 12 добавлено и 8 удалено
  1. 1 1
      examples/common/example_common.c
  2. 1 1
      include/esp_loader.h
  3. 6 2
      src/esp_loader.c
  4. 1 1
      src/esp_targets.c
  5. 3 3
      src/serial_comm.c

+ 1 - 1
examples/common/example_common.c

@@ -214,7 +214,7 @@ esp_loader_error_t load_ram_binary(const uint8_t *bin)
 {
     printf("Start loading\n");
     esp_loader_error_t err;
-    example_bin_header_t *header = (example_bin_header_t *)bin;
+    const example_bin_header_t *header = (const example_bin_header_t *)bin;
     example_bin_segment_t segments[header->segments];
 
     // Parse segments

+ 1 - 1
include/esp_loader.h

@@ -148,7 +148,7 @@ esp_loader_error_t esp_loader_flash_start(uint32_t offset, uint32_t image_size,
   *     - ESP_LOADER_ERROR_TIMEOUT Timeout
   *     - ESP_LOADER_ERROR_INVALID_RESPONSE Internal error
   */
-esp_loader_error_t esp_loader_flash_write(const void *payload, uint32_t size);
+esp_loader_error_t esp_loader_flash_write(void *payload, uint32_t size);
 
 /**
   * @brief Ends flash operation.

+ 6 - 2
src/esp_loader.c

@@ -261,12 +261,16 @@ esp_loader_error_t esp_loader_flash_start(uint32_t offset, uint32_t image_size,
 }
 
 
-esp_loader_error_t esp_loader_flash_write(const void *payload, uint32_t size)
+esp_loader_error_t esp_loader_flash_write(void *payload, uint32_t size)
 {
     uint32_t padding_bytes = s_flash_write_size - size;
     uint8_t *data = (uint8_t *)payload;
     uint32_t padding_index = size;
 
+    if (size > s_flash_write_size) {
+        return ESP_LOADER_ERROR_INVALID_PARAM;
+    }
+
     while (padding_bytes--) {
         data[padding_index++] = PADDING_PATTERN;
     }
@@ -297,7 +301,7 @@ esp_loader_error_t esp_loader_mem_start(uint32_t offset, uint32_t size, uint32_t
 
 esp_loader_error_t esp_loader_mem_write(const void *payload, uint32_t size)
 {
-    uint8_t *data = (uint8_t *)payload;
+    const uint8_t *data = (const uint8_t *)payload;
     loader_port_start_timer(timeout_per_mb(size, LOAD_RAM_TIMEOUT_PER_MB));
     return loader_mem_data_cmd(data, size);
 }

+ 1 - 1
src/esp_targets.c

@@ -155,7 +155,7 @@ static const esp_target_t esp_target[ESP_MAX_CHIP] = {
 
 const target_registers_t *get_esp_target_data(target_chip_t chip)
 {
-    return (target_registers_t *)&esp_target[chip];
+    return (const target_registers_t *)&esp_target[chip];
 }
 
 esp_loader_error_t loader_detect_chip(target_chip_t *target_chip, const target_registers_t **target_data)

+ 3 - 3
src/serial_comm.c

@@ -149,7 +149,7 @@ static esp_loader_error_t SLIP_send_delimiter(void)
 static esp_loader_error_t send_cmd(const void *cmd_data, uint32_t size, uint32_t *reg_value)
 {
     response_t response;
-    command_t command = ((command_common_t *)cmd_data)->command;
+    command_t command = ((const command_common_t *)cmd_data)->command;
 
     RETURN_ON_ERROR( SLIP_send_delimiter() );
     RETURN_ON_ERROR( SLIP_send((const uint8_t *)cmd_data, size) );
@@ -163,7 +163,7 @@ static esp_loader_error_t send_cmd_with_data(const void *cmd_data, size_t cmd_si
                                              const void *data, size_t data_size)
 {
     response_t response;
-    command_t command = ((command_common_t *)cmd_data)->command;
+    command_t command = ((const command_common_t *)cmd_data)->command;
 
     RETURN_ON_ERROR( SLIP_send_delimiter() );
     RETURN_ON_ERROR( SLIP_send((const uint8_t *)cmd_data, cmd_size) );
@@ -177,7 +177,7 @@ static esp_loader_error_t send_cmd_with_data(const void *cmd_data, size_t cmd_si
 static esp_loader_error_t send_cmd_md5(const void *cmd_data, size_t cmd_size, uint8_t md5_out[MD5_SIZE])
 {
     rom_md5_response_t response;
-    command_t command = ((command_common_t *)cmd_data)->command;
+    command_t command = ((const command_common_t *)cmd_data)->command;
 
     RETURN_ON_ERROR( SLIP_send_delimiter() );
     RETURN_ON_ERROR( SLIP_send((const uint8_t *)cmd_data, cmd_size) );