You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/10/14 23:41:21 UTC
[2/2] incubator-mynewt-core git commit: bootutil - Add unit tests for
image revert.
bootutil - Add unit tests for image revert.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/3758239d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/3758239d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/3758239d
Branch: refs/heads/develop
Commit: 3758239dba41f5dae47e481ef82b4f95edb59cf2
Parents: 4b1a5c1
Author: Christopher Collins <cc...@apache.org>
Authored: Fri Oct 14 13:40:00 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Fri Oct 14 16:39:48 2016 -0700
----------------------------------------------------------------------
boot/bootutil/include/bootutil/bootutil_misc.h | 7 +-
boot/bootutil/src/bootutil_misc.c | 85 ++-----
boot/bootutil/src/bootutil_priv.h | 4 -
boot/bootutil/src/loader.c | 34 ---
boot/bootutil/test/src/boot_test.c | 237 ++++++++++----------
mgmt/imgmgr/src/imgmgr_state.c | 3 +-
6 files changed, 141 insertions(+), 229 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/boot/bootutil/include/bootutil/bootutil_misc.h
----------------------------------------------------------------------
diff --git a/boot/bootutil/include/bootutil/bootutil_misc.h b/boot/bootutil/include/bootutil/bootutil_misc.h
index 1efe864..87b0b28 100644
--- a/boot/bootutil/include/bootutil/bootutil_misc.h
+++ b/boot/bootutil/include/bootutil/bootutil_misc.h
@@ -26,8 +26,11 @@
extern "C" {
#endif
-int boot_vect_read_test(int *slot);
-int boot_vect_read_main(int *slot);
+#define BOOT_SWAP_TYPE_NONE 0
+#define BOOT_SWAP_TYPE_TEMP 1
+#define BOOT_SWAP_TYPE_PERM 2
+
+int boot_swap_type(void);
int boot_vect_write_test(int slot);
int boot_vect_write_main(void);
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/boot/bootutil/src/bootutil_misc.c
----------------------------------------------------------------------
diff --git a/boot/bootutil/src/bootutil_misc.c b/boot/bootutil/src/bootutil_misc.c
index bb7b2a3..0606215 100644
--- a/boot/bootutil/src/bootutil_misc.c
+++ b/boot/bootutil/src/bootutil_misc.c
@@ -65,11 +65,8 @@ boot_status_sz(void)
return sizeof(struct boot_img_trailer) + 32 * sizeof(uint32_t);
}
-/*
- * Read the image trailer from a given slot.
- */
-static int
-boot_vect_read_img_trailer(int slot, struct boot_img_trailer *bit)
+int
+boot_swap_type(void)
{
struct boot_img_trailer bit0;
struct boot_img_trailer bit1;
@@ -80,77 +77,25 @@ boot_vect_read_img_trailer(int slot, struct boot_img_trailer *bit)
if (bit0.bit_copy_start == BOOT_MAGIC_SWAP_NONE &&
bit1.bit_copy_start == BOOT_MAGIC_SWAP_NONE) {
- area_id = flash_area_id_from_image_slot(slot);
- rc = flash_area_open(area_id, &fap);
- if (rc) {
- return rc;
+ return BOOT_SWAP_TYPE_NONE;
}
- off = fap->fa_size - sizeof(struct boot_img_trailer);
- rc = flash_area_read(fap, off, bit, sizeof(*bit));
- flash_area_close(fap);
-
- return rc;
-}
-/**
- * Retrieves from the slot number of the test image (i.e.,
- * the image that has not been proven stable, and which will only run once).
- *
- * @param slot On success, the slot number of image to boot.
- *
- * @return 0 if a test image was found;
- * nonzero if there is no test image.
- */
-int
-boot_vect_read_test(int *slot)
-{
- struct boot_img_trailer bit;
- int i;
- int rc;
+ if (bit1.bit_copy_start == BOOT_MAGIC_SWAP_TEMP) {
+ return BOOT_SWAP_TYPE_TEMP;
+ }
- for (i = 0; i < 2; i++) {
- if (i == boot_current_slot) {
- continue;
- }
- rc = boot_vect_read_img_trailer(i, &bit);
- if (rc) {
- continue;
- }
- if (bit.bit_copy_start == BOOT_MAGIC_SWAP_TEMP) {
- *slot = i;
- return 0;
+ if (bit0.bit_copy_start == BOOT_MAGIC_SWAP_PERM) {
+ if (bit0.bit_img_ok != 0xff) {
+ return BOOT_SWAP_TYPE_NONE;
+ } else {
+ return BOOT_SWAP_TYPE_PERM;
}
}
- return -1;
-}
-
-/**
- * Retrieves from the slot number of the main image. If this is
- * different from test image slot, next restart will revert to main.
- *
- * @param out_ver On success, the main version gets written here.
- *
- * @return 0 on success; nonzero on failure.
- */
-int
-boot_vect_read_main(int *slot)
-{
- int rc;
- struct boot_img_trailer bit;
-
- rc = boot_vect_read_img_trailer(0, &bit);
- assert(rc == 0);
- if (bit.bit_copy_start != BOOT_MAGIC_SWAP_TEMP || bit.bit_img_ok != 0xff) {
- /*
- * If there never was copy that took place, or if the current
- * image has been marked good, we'll keep booting it.
- */
- *slot = 0;
- } else {
- *slot = 1;
- }
- return 0;
+ /* This should never happen. */
+ /* XXX: Remove this assert. */
+ assert(0);
+ return BOOT_SWAP_TYPE_NONE;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/boot/bootutil/src/bootutil_priv.h
----------------------------------------------------------------------
diff --git a/boot/bootutil/src/bootutil_priv.h b/boot/bootutil/src/bootutil_priv.h
index 7112c60..73202f7 100644
--- a/boot/bootutil/src/bootutil_priv.h
+++ b/boot/bootutil/src/bootutil_priv.h
@@ -52,10 +52,6 @@ struct boot_status {
uint8_t state;
};
-#define BOOT_SWAP_TYPE_NONE 0
-#define BOOT_SWAP_TYPE_TEMP 1
-#define BOOT_SWAP_TYPE_PERM 2
-
/*
* End-of-image slot data structure.
*/
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/boot/bootutil/src/loader.c
----------------------------------------------------------------------
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index 7c07a9c..f7d159e 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -185,39 +185,6 @@ boot_scratch_magic(struct boot_img_trailer *bit)
hal_flash_read(flash_id, off, bit, sizeof(*bit));
}
-static int
-boot_swap_type(void)
-{
- struct boot_img_trailer bit0;
- struct boot_img_trailer bit1;
-
- boot_slot_magic(0, &bit0);
- boot_slot_magic(1, &bit1);
-
- if (bit0.bit_copy_start == BOOT_MAGIC_SWAP_NONE &&
- bit1.bit_copy_start == BOOT_MAGIC_SWAP_NONE) {
-
- return BOOT_SWAP_TYPE_NONE;
- }
-
- if (bit1.bit_copy_start == BOOT_MAGIC_SWAP_TEMP) {
- return BOOT_SWAP_TYPE_TEMP;
- }
-
- if (bit0.bit_copy_start == BOOT_MAGIC_SWAP_PERM) {
- if (bit0.bit_img_ok != 0xff) {
- return BOOT_SWAP_TYPE_NONE;
- } else {
- return BOOT_SWAP_TYPE_PERM;
- }
- }
-
- /* This should never happen. */
- /* XXX: Remove this assert. */
- assert(0);
- return BOOT_SWAP_TYPE_NONE;
-}
-
/*
* Gather info about image in a given slot.
*/
@@ -613,7 +580,6 @@ boot_go(const struct boot_req *req, struct boot_rsp *rsp)
//}
/* Check if we should initiate copy, or revert back to earlier image. */
- //swap_type = boot_validate_state(swap_type);
swap_type = boot_validate_state(swap_type);
if (swap_type == BOOT_SWAP_TYPE_NONE) {
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/boot/bootutil/test/src/boot_test.c
----------------------------------------------------------------------
diff --git a/boot/bootutil/test/src/boot_test.c b/boot/bootutil/test/src/boot_test.c
index 8bb0015..cf69dcd 100644
--- a/boot/bootutil/test/src/boot_test.c
+++ b/boot/bootutil/test/src/boot_test.c
@@ -430,6 +430,9 @@ boot_test_util_verify_all(const struct boot_req *req, int expected_swap_type,
int rc;
int i;
+ TEST_ASSERT_FATAL(req != NULL);
+ TEST_ASSERT_FATAL(hdr0 != NULL || hdr1 != NULL);
+
num_swaps = 0;
for (i = 0; i < 3; i++) {
rc = boot_go(req, &rsp);
@@ -440,13 +443,23 @@ boot_test_util_verify_all(const struct boot_req *req, int expected_swap_type,
}
if (num_swaps % 2 == 0) {
- slot0hdr = hdr0;
- slot1hdr = hdr1;
+ if (hdr0 != NULL) {
+ slot0hdr = hdr0;
+ slot1hdr = hdr1;
+ } else {
+ slot0hdr = hdr1;
+ slot1hdr = hdr0;
+ }
orig_slot_0 = 0;
orig_slot_1 = 1;
} else {
- slot0hdr = hdr1;
- slot1hdr = hdr0;
+ if (hdr1 != NULL) {
+ slot0hdr = hdr1;
+ slot1hdr = hdr0;
+ } else {
+ slot0hdr = hdr0;
+ slot1hdr = hdr1;
+ }
orig_slot_0 = 1;
orig_slot_1 = 0;
}
@@ -505,10 +518,6 @@ TEST_CASE(boot_test_nv_ns_10)
TEST_CASE(boot_test_nv_ns_01)
{
- struct boot_rsp rsp;
- int rc;
-
-
struct image_header hdr = {
.ih_magic = IMAGE_MAGIC,
.ih_tlv_size = 4 + 32,
@@ -530,23 +539,11 @@ TEST_CASE(boot_test_nv_ns_01)
boot_test_util_write_image(&hdr, 1);
boot_test_util_write_hash(&hdr, 1);
- boot_vect_write_test(1);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr, sizeof hdr) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr, 1, NULL, 0xff);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_PERM, NULL, &hdr);
}
TEST_CASE(boot_test_nv_ns_11)
{
- struct boot_rsp rsp;
- int rc;
-
struct image_header hdr0 = {
.ih_magic = IMAGE_MAGIC,
.ih_tlv_size = 4 + 32,
@@ -579,23 +576,11 @@ TEST_CASE(boot_test_nv_ns_11)
boot_test_util_write_image(&hdr1, 1);
boot_test_util_write_hash(&hdr1, 1);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr0, sizeof hdr0) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr0, 0, &hdr1, 1);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_NONE, &hdr0, &hdr1);
}
TEST_CASE(boot_test_vm_ns_10)
{
- struct boot_rsp rsp;
- int rc;
-
-
struct image_header hdr = {
.ih_magic = IMAGE_MAGIC,
.ih_tlv_size = 4 + 32,
@@ -617,20 +602,11 @@ TEST_CASE(boot_test_vm_ns_10)
boot_test_util_write_image(&hdr, 0);
boot_test_util_write_hash(&hdr, 0);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr, sizeof hdr) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr, 0, NULL, 0xff);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_NONE, &hdr, NULL);
}
TEST_CASE(boot_test_vm_ns_01)
{
- struct boot_rsp rsp;
int rc;
struct image_header hdr = {
@@ -657,22 +633,11 @@ TEST_CASE(boot_test_vm_ns_01)
rc = boot_vect_write_test(1);
TEST_ASSERT(rc == 0);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr, sizeof hdr) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr, 1, NULL, 0xff);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_PERM, NULL, &hdr);
}
TEST_CASE(boot_test_vm_ns_11_a)
{
- struct boot_rsp rsp;
- int rc;
-
struct image_header hdr0 = {
.ih_magic = IMAGE_MAGIC,
.ih_tlv_size = 4 + 32,
@@ -705,20 +670,11 @@ TEST_CASE(boot_test_vm_ns_11_a)
boot_test_util_write_image(&hdr1, 1);
boot_test_util_write_hash(&hdr1, 1);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr0, sizeof hdr0) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr0, 0, &hdr1, 1);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_NONE, &hdr0, &hdr1);
}
TEST_CASE(boot_test_vm_ns_11_b)
{
- struct boot_rsp rsp;
int rc;
struct image_header hdr0 = {
@@ -756,20 +712,11 @@ TEST_CASE(boot_test_vm_ns_11_b)
rc = boot_vect_write_test(1);
TEST_ASSERT(rc == 0);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr1, sizeof hdr1) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr1, 1, &hdr0, 0);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_TEMP, &hdr0, &hdr1);
}
TEST_CASE(boot_test_vm_ns_11_2areas)
{
- struct boot_rsp rsp;
int rc;
struct image_header hdr0 = {
@@ -807,23 +754,11 @@ TEST_CASE(boot_test_vm_ns_11_2areas)
rc = boot_vect_write_test(1);
TEST_ASSERT(rc == 0);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr1, sizeof hdr1) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr1, 1, &hdr0, 0);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_TEMP, &hdr0, &hdr1);
}
TEST_CASE(boot_test_nv_bs_10)
{
- struct boot_status status;
- struct boot_rsp rsp;
- int rc;
-
struct image_header hdr = {
.ih_magic = IMAGE_MAGIC,
.ih_tlv_size = 4 + 32,
@@ -846,31 +781,13 @@ TEST_CASE(boot_test_nv_bs_10)
boot_test_util_write_hash(&hdr, 0);
boot_test_util_swap_areas(boot_test_slot_areas[1],
BOOT_TEST_AREA_IDX_SCRATCH);
-#if 0
- status.length = hdr.ih_hdr_size + hdr.ih_img_size + hdr.ih_tlv_size;
- status.state = 1;
-
- rc = boot_write_status(&status);
- TEST_ASSERT(rc == 0);
- conf_load();
-#else
- (void)status;
-#endif
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr, sizeof hdr) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr, 0, NULL, 0xff);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_NONE, &hdr, NULL);
}
TEST_CASE(boot_test_nv_bs_11)
{
struct boot_status status;
- struct boot_rsp rsp;
int rc;
struct image_header hdr0 = {
@@ -915,15 +832,7 @@ TEST_CASE(boot_test_nv_bs_11)
rc = boot_write_status(&status);
TEST_ASSERT(rc == 0);
- rc = boot_go(&req, &rsp);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(memcmp(rsp.br_hdr, &hdr1, sizeof hdr1) == 0);
- TEST_ASSERT(rsp.br_flash_id == boot_test_img_addrs[0].flash_id);
- TEST_ASSERT(rsp.br_image_addr == boot_test_img_addrs[0].address);
-
- boot_test_util_verify_flash(&hdr1, 1, &hdr0, 0);
- boot_test_util_verify_status_clear();
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_TEMP, &hdr0, &hdr1);
}
TEST_CASE(boot_test_nv_bs_11_2areas)
@@ -1149,6 +1058,98 @@ TEST_CASE(boot_test_invalid_hash)
boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_NONE, &hdr0, NULL);
}
+TEST_CASE(boot_test_revert)
+{
+ struct image_header hdr0 = {
+ .ih_magic = IMAGE_MAGIC,
+ .ih_tlv_size = 4 + 32,
+ .ih_hdr_size = BOOT_TEST_HEADER_SIZE,
+ .ih_img_size = 5 * 1024,
+ .ih_flags = IMAGE_F_SHA256,
+ .ih_ver = { 0, 5, 21, 432 },
+ };
+
+ struct image_header hdr1 = {
+ .ih_magic = IMAGE_MAGIC,
+ .ih_tlv_size = 4 + 32,
+ .ih_hdr_size = BOOT_TEST_HEADER_SIZE,
+ .ih_img_size = 32 * 1024,
+ .ih_flags = IMAGE_F_SHA256,
+ .ih_ver = { 1, 2, 3, 432 },
+ };
+
+ struct boot_req req = {
+ .br_area_descs = boot_test_area_descs,
+ .br_slot_areas = boot_test_slot_areas,
+ .br_num_image_areas = BOOT_TEST_AREA_IDX_SCRATCH + 1,
+ .br_scratch_area_idx = BOOT_TEST_AREA_IDX_SCRATCH,
+ .br_img_sz = (384 * 1024),
+ };
+
+ boot_test_util_init_flash();
+ boot_test_util_write_image(&hdr0, 0);
+ boot_test_util_write_hash(&hdr0, 0);
+ boot_test_util_write_image(&hdr1, 1);
+ boot_test_util_write_hash(&hdr1, 1);
+
+ /* Indicate that the image in slot 0 is being tested. */
+ boot_set_copy_done();
+
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_PERM, &hdr0, &hdr1);
+}
+
+TEST_CASE(boot_test_revert_continue)
+{
+ struct boot_status status;
+ int rc;
+
+ struct image_header hdr0 = {
+ .ih_magic = IMAGE_MAGIC,
+ .ih_tlv_size = 4 + 32,
+ .ih_hdr_size = BOOT_TEST_HEADER_SIZE,
+ .ih_img_size = 5 * 1024,
+ .ih_flags = IMAGE_F_SHA256,
+ .ih_ver = { 0, 5, 21, 432 },
+ };
+
+ struct image_header hdr1 = {
+ .ih_magic = IMAGE_MAGIC,
+ .ih_tlv_size = 4 + 32,
+ .ih_hdr_size = BOOT_TEST_HEADER_SIZE,
+ .ih_img_size = 32 * 1024,
+ .ih_flags = IMAGE_F_SHA256,
+ .ih_ver = { 1, 2, 3, 432 },
+ };
+
+ struct boot_req req = {
+ .br_area_descs = boot_test_area_descs,
+ .br_slot_areas = boot_test_slot_areas,
+ .br_num_image_areas = BOOT_TEST_AREA_IDX_SCRATCH + 1,
+ .br_scratch_area_idx = BOOT_TEST_AREA_IDX_SCRATCH,
+ .br_img_sz = (384 * 1024),
+ };
+
+ boot_test_util_init_flash();
+ boot_test_util_write_image(&hdr0, 0);
+ boot_test_util_write_hash(&hdr0, 0);
+ boot_test_util_write_image(&hdr1, 1);
+ boot_test_util_write_hash(&hdr1, 1);
+
+ boot_test_util_swap_areas(2, 5);
+
+ /* Indicate that the image in slot 0 is being tested. */
+ boot_set_copy_done();
+
+ status.idx = 1;
+ status.elem_sz = 1;
+ status.state = 0;
+
+ rc = boot_write_status(&status);
+ TEST_ASSERT_FATAL(rc == 0);
+
+ boot_test_util_verify_all(&req, BOOT_SWAP_TYPE_PERM, &hdr0, &hdr1);
+}
+
TEST_SUITE(boot_test_main)
{
boot_test_nv_ns_10();
@@ -1166,6 +1167,8 @@ TEST_SUITE(boot_test_main)
boot_test_no_hash();
boot_test_no_flag_has_hash();
boot_test_invalid_hash();
+ boot_test_revert();
+ boot_test_revert_continue();
}
int
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3758239d/mgmt/imgmgr/src/imgmgr_state.c
----------------------------------------------------------------------
diff --git a/mgmt/imgmgr/src/imgmgr_state.c b/mgmt/imgmgr/src/imgmgr_state.c
index ce61e32..3802b69 100644
--- a/mgmt/imgmgr/src/imgmgr_state.c
+++ b/mgmt/imgmgr/src/imgmgr_state.c
@@ -37,8 +37,7 @@ imgmgr_state_flags(int query_slot)
{
split_mode_t split_mode;
uint8_t flags;
- int slot;
- int rc;
+ int swap_type;
assert(query_slot == 0 || query_slot == 1);