diff options
Diffstat (limited to 'ports/stm32/mboot/pack.c')
| -rw-r--r-- | ports/stm32/mboot/pack.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/ports/stm32/mboot/pack.c b/ports/stm32/mboot/pack.c index 63f98fed1..63ab93ea3 100644 --- a/ports/stm32/mboot/pack.c +++ b/ports/stm32/mboot/pack.c @@ -112,7 +112,7 @@ static int mboot_pack_commit_chunk(uint32_t addr, uint8_t *data, size_t len) { // Handle a chunk with the full firmware signature. static int mboot_pack_handle_full_sig(void) { if (firmware_chunk_buf.header.length < hydro_sign_BYTES) { - return -1; + return -MBOOT_ERRNO_PACK_INVALID_CHUNK; } uint8_t *full_sig = &firmware_chunk_buf.data[firmware_chunk_buf.header.length - hydro_sign_BYTES]; @@ -138,7 +138,7 @@ static int mboot_pack_handle_full_sig(void) { } int ret = hydro_sign_update(&sign_state, buf, l); if (ret != 0) { - return -1; + return -MBOOT_ERRNO_PACK_SIGN_FAILED; } addr += l; len -= l; @@ -150,7 +150,7 @@ static int mboot_pack_handle_full_sig(void) { if (ret != 0) { dfu_context.status = DFU_STATUS_ERROR_VERIFY; dfu_context.error = MBOOT_ERROR_STR_INVALID_SIG_IDX; - return -1; + return -MBOOT_ERRNO_PACK_SIGN_FAILED; } // Full firmware passed the signature check. @@ -167,7 +167,7 @@ static int mboot_pack_handle_firmware(void) { if (hydro_secretbox_decrypt(decrypted_buf, fw_data, fw_len, 0, MBOOT_PACK_HYDRO_CONTEXT, mboot_pack_secretbox_key) != 0) { dfu_context.status = DFU_STATUS_ERROR_VERIFY; dfu_context.error = MBOOT_ERROR_STR_INVALID_SIG_IDX; - return -1; + return -MBOOT_ERRNO_PACK_DECRYPT_FAILED; } // Use the decrypted message contents going formward. @@ -182,7 +182,7 @@ static int mboot_pack_handle_firmware(void) { if (read == 0) { return 0; // finished decompressing } else if (read < 0) { - return -1; // error reading + return -MBOOT_ERRNO_GUNZIP_FAILED; // error reading } int ret = mboot_pack_commit_chunk(addr, uncompressed_buf, read); if (ret != 0) { @@ -210,14 +210,14 @@ int mboot_pack_write(uint32_t addr, const uint8_t *src8, size_t len) { if (addr < firmware_chunk_base_addr) { // Address out of range. firmware_chunk_base_addr = 0; - return -1; + return -MBOOT_ERRNO_PACK_INVALID_ADDR; } size_t offset = addr - firmware_chunk_base_addr; if (offset + len > sizeof(firmware_chunk_buf)) { // Address/length out of range. firmware_chunk_base_addr = 0; - return -1; + return -MBOOT_ERRNO_PACK_INVALID_ADDR; } // Copy in the new data piece into the chunk buffer. @@ -232,14 +232,14 @@ int mboot_pack_write(uint32_t addr, const uint8_t *src8, size_t len) { // Chunk header has the wrong version. dfu_context.status = DFU_STATUS_ERROR_FILE; dfu_context.error = MBOOT_ERROR_STR_INVALID_SIG_IDX; - return -1; + return -MBOOT_ERRNO_PACK_INVALID_VERSION; } if (firmware_chunk_buf.header.address != firmware_chunk_base_addr) { // Chunk address doesn't agree with dfu address, abort. dfu_context.status = DFU_STATUS_ERROR_ADDRESS; dfu_context.error = MBOOT_ERROR_STR_INVALID_SIG_IDX; - return -1; + return -MBOOT_ERRNO_PACK_INVALID_ADDR; } if (offset + len < sizeof(firmware_chunk_buf.header) + firmware_chunk_buf.header.length + sizeof(firmware_chunk_buf.signature)) { @@ -260,7 +260,7 @@ int mboot_pack_write(uint32_t addr, const uint8_t *src8, size_t len) { // Signature failed dfu_context.status = DFU_STATUS_ERROR_VERIFY; dfu_context.error = MBOOT_ERROR_STR_INVALID_SIG_IDX; - return -1; + return -MBOOT_ERRNO_PACK_SIGN_FAILED; } // Signature passed, we have valid chunk. @@ -275,7 +275,7 @@ int mboot_pack_write(uint32_t addr, const uint8_t *src8, size_t len) { return mboot_pack_handle_firmware(); } else { // Unsupported contents. - return -1; + return -MBOOT_ERRNO_PACK_INVALID_CHUNK; } } |
