summaryrefslogtreecommitdiff
path: root/ports/stm32/mboot/pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/stm32/mboot/pack.c')
-rw-r--r--ports/stm32/mboot/pack.c22
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;
}
}