diff --git a/chip/g/upgrade_fw.c b/chip/g/upgrade_fw.c index 26d3d32517..c8ff5b80d5 100644 --- a/chip/g/upgrade_fw.c +++ b/chip/g/upgrade_fw.c @@ -102,12 +102,12 @@ void fw_upgrade_command_handler(void *body, */ *response_size = sizeof(*rv); - body_size = cmd_size - offsetof(struct upgrade_command, block_body); - if (body_size < 0) { + if (cmd_size < offsetof(struct upgrade_command, block_body)) { CPRINTF("%s:%d\n", __func__, __LINE__); *rv = UPGRADE_GEN_ERROR; return; } + body_size = cmd_size - offsetof(struct upgrade_command, block_body); if (!cmd_body->block_base && !body_size) { /*