boot_serial: Update cddl-gen version
To bring in bugfixes.
Regenerate code.
Signed-off-by: Øyvind Rønningstad <oyvind.ronningstad@nordicsemi.no>
diff --git a/boot/boot_serial/src/cbor_common.c b/boot/boot_serial/src/cbor_common.c
index 79469d5..8a4cd9c 100644
--- a/boot/boot_serial/src/cbor_common.c
+++ b/boot/boot_serial/src/cbor_common.c
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
diff --git a/boot/boot_serial/src/cbor_common.h b/boot/boot_serial/src/cbor_common.h
index ce73dd6..e652908 100644
--- a/boot/boot_serial/src/cbor_common.h
+++ b/boot/boot_serial/src/cbor_common.h
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
diff --git a/boot/boot_serial/src/cbor_decode.c b/boot/boot_serial/src/cbor_decode.c
index 74c4cd7..9707729 100644
--- a/boot/boot_serial/src/cbor_decode.c
+++ b/boot/boot_serial/src/cbor_decode.c
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -126,6 +126,7 @@
static bool int32_decode(cbor_state_t *state, int32_t *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
uint32_t uint_result;
int32_t int_result;
@@ -155,6 +156,7 @@
bool intx32_decode(cbor_state_t *state, int32_t *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != CBOR_MAJOR_TYPE_PINT
@@ -197,6 +199,7 @@
bool uintx32_decode(cbor_state_t *state, uint32_t *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != CBOR_MAJOR_TYPE_PINT) {
@@ -233,6 +236,7 @@
static bool strx_start_decode(cbor_state_t *state,
cbor_string_type_t *result, cbor_major_type_t exp_major_type)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != exp_major_type) {
@@ -243,10 +247,10 @@
FAIL();
}
- if ((state->payload + result->len) > state->payload_end) {
+ if (result->len > (state->payload_end - state->payload)) {
cbor_print("error: 0x%x > 0x%x\r\n",
- (uint32_t)(state->payload + result->len),
- (uint32_t)state->payload_end);
+ (uint32_t)result->len,
+ (uint32_t)(state->payload_end - state->payload));
FAIL_RESTORE();
}
@@ -264,6 +268,7 @@
FAIL_RESTORE();
}
+ /* Overflow is checked in strx_start_decode() */
state->payload_end = result->value + result->len;
return true;
}
@@ -290,6 +295,7 @@
FAIL();
}
+ /* Overflow is checked in strx_start_decode() */
(state->payload) += result->len;
return true;
}
@@ -338,8 +344,9 @@
static bool list_map_start_decode(cbor_state_t *state,
cbor_major_type_t exp_major_type)
{
- uint32_t new_elem_count;
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
+ uint32_t new_elem_count;
if (major_type != exp_major_type) {
FAIL();
@@ -400,6 +407,7 @@
static bool primx_decode(cbor_state_t *state, uint32_t *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != CBOR_MAJOR_TYPE_PRIM) {
@@ -468,6 +476,7 @@
bool double_decode(cbor_state_t *state, double *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != CBOR_MAJOR_TYPE_PRIM) {
@@ -501,6 +510,7 @@
cbor_assert(result == NULL,
"'any' type cannot be returned, only skipped.\n");
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
uint32_t value;
uint32_t num_decode;
@@ -545,6 +555,7 @@
bool tag_decode(cbor_state_t *state, uint32_t *result)
{
+ FAIL_IF(state->payload >= state->payload_end);
uint8_t major_type = MAJOR_TYPE(*state->payload);
if (major_type != CBOR_MAJOR_TYPE_TAG) {
diff --git a/boot/boot_serial/src/cbor_decode.h b/boot/boot_serial/src/cbor_decode.h
index b0cfaa1..5bdc800 100644
--- a/boot/boot_serial/src/cbor_decode.h
+++ b/boot/boot_serial/src/cbor_decode.h
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -19,7 +19,8 @@
/** The cbor_decode library provides functions for decoding CBOR data elements.
*
* This library is primarily meant to be called from code generated by
- * $CDDL_GEN_BASE/scripts/cddl_gen.py
+ * $CDDL_GEN_BASE/cddl_gen/cddl_gen.py script, or its equivalent cddl_gen
+ * command line executable.
*
* Some details to notice about this library:
* - Integers are all 32 bits (uint32_t). This means that CBOR's 64 bit values
diff --git a/boot/boot_serial/src/cbor_encode.c b/boot/boot_serial/src/cbor_encode.c
index c2e9191..4d18794 100644
--- a/boot/boot_serial/src/cbor_encode.c
+++ b/boot/boot_serial/src/cbor_encode.c
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -239,6 +239,9 @@
if (!strx_start_encode(state, input, major_type)) {
FAIL();
}
+ if (input->len > (state->payload_end - state->payload)) {
+ FAIL();
+ }
if (state->payload_mut != input->value) {
memmove(state->payload_mut, input->value, input->len);
}
diff --git a/boot/boot_serial/src/cbor_encode.h b/boot/boot_serial/src/cbor_encode.h
index 654fc55..57b4509 100644
--- a/boot/boot_serial/src/cbor_encode.h
+++ b/boot/boot_serial/src/cbor_encode.h
@@ -1,6 +1,6 @@
/*
* This file has been copied from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -55,10 +55,10 @@
bool tstrx_encode(cbor_state_t *state, const cbor_string_type_t *result);
#define tstrx_put(state, string) \
- tstrx_encode(state, &(cbor_string_type_t){.value = (const uint8_t *)string, .len = (sizeof(string) - 1)})
+ tstrx_encode(state, &(cbor_string_type_t){.value = string, len = (sizeof(string) - 1)})
#define tstrx_put_term(state, string) \
- tstrx_encode(state, &(cbor_string_type_t){.value = (const uint8_t *)string, .len = strlen((const char *)string)})
+ tstrx_encode(state, &(cbor_string_type_t){.value = string, len = strlen(string)})
/** Encode a LIST header.
*
diff --git a/boot/boot_serial/src/regenerate_serial_recovery_cbor.sh b/boot/boot_serial/src/regenerate_serial_recovery_cbor.sh
index b371e0a..08d1220 100755
--- a/boot/boot_serial/src/regenerate_serial_recovery_cbor.sh
+++ b/boot/boot_serial/src/regenerate_serial_recovery_cbor.sh
@@ -30,7 +30,7 @@
copy_with_copy_notice ../../../ext/cddl-gen/include/cbor_common.h cbor_common.h
echo "Generating serial_recovery_cbor.c|h"
-python3 ../../../ext/cddl-gen/scripts/cddl_gen.py -c serial_recovery.cddl code -d -t Upload --oc serial_recovery_cbor.c --oh serial_recovery_cbor.h --time-header
+python3 ../../../ext/cddl-gen/cddl_gen/cddl_gen.py -c serial_recovery.cddl code -d -t Upload --oc serial_recovery_cbor.c --oh serial_recovery_cbor.h --time-header
add_copyright() {
echo "$(printf '/*
diff --git a/boot/boot_serial/src/serial_recovery_cbor.c b/boot/boot_serial/src/serial_recovery_cbor.c
index 4277a7d..3b4374c 100644
--- a/boot/boot_serial/src/serial_recovery_cbor.c
+++ b/boot/boot_serial/src/serial_recovery_cbor.c
@@ -1,6 +1,6 @@
/*
* This file has been generated from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -11,7 +11,7 @@
/*
* Generated with cddl_gen.py (https://github.com/NordicSemiconductor/cddl-gen)
- * at: 2021-05-10 09:40:43
+ * at: 2021-08-02 17:09:42
* Generated with a default_max_qty of 3
*/
@@ -34,19 +34,19 @@
cbor_string_type_t tmp_str;
bool int_res;
- bool tmp_result = (((union_start_code(state) && (int_res = (((((tstrx_expect(state, ((tmp_str.value = (const uint8_t *)"image",
+ bool tmp_result = (((union_start_code(state) && (int_res = (((((tstrx_expect(state, ((tmp_str.value = "image",
tmp_str.len = sizeof("image") - 1, &tmp_str)))))
&& (intx32_decode(state, (&(*result)._Member_image)))) && (((*result)._Member_choice = _Member_image) || 1))
- || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = (const uint8_t *)"data",
+ || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = "data",
tmp_str.len = sizeof("data") - 1, &tmp_str)))))
&& (bstrx_decode(state, (&(*result)._Member_data)))) && (((*result)._Member_choice = _Member_data) || 1)))
- || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = (const uint8_t *)"len",
+ || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = "len",
tmp_str.len = sizeof("len") - 1, &tmp_str)))))
&& (intx32_decode(state, (&(*result)._Member_len)))) && (((*result)._Member_choice = _Member_len) || 1)))
- || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = (const uint8_t *)"off",
+ || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = "off",
tmp_str.len = sizeof("off") - 1, &tmp_str)))))
&& (intx32_decode(state, (&(*result)._Member_off)))) && (((*result)._Member_choice = _Member_off) || 1)))
- || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = (const uint8_t *)"sha",
+ || (union_elem_code(state) && ((((tstrx_expect(state, ((tmp_str.value = "sha",
tmp_str.len = sizeof("sha") - 1, &tmp_str)))))
&& (bstrx_decode(state, (&(*result)._Member_sha)))) && (((*result)._Member_choice = _Member_sha) || 1)))), union_end_code(state), int_res))));
diff --git a/boot/boot_serial/src/serial_recovery_cbor.h b/boot/boot_serial/src/serial_recovery_cbor.h
index bccc443..f167d9b 100644
--- a/boot/boot_serial/src/serial_recovery_cbor.h
+++ b/boot/boot_serial/src/serial_recovery_cbor.h
@@ -1,6 +1,6 @@
/*
* This file has been generated from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
@@ -11,7 +11,7 @@
/*
* Generated with cddl_gen.py (https://github.com/NordicSemiconductor/cddl-gen)
- * at: 2021-05-10 09:40:43
+ * at: 2021-08-02 17:09:42
* Generated with a default_max_qty of 3
*/
diff --git a/boot/boot_serial/src/types_serial_recovery_cbor.h b/boot/boot_serial/src/types_serial_recovery_cbor.h
index 01505eb..8856017 100644
--- a/boot/boot_serial/src/types_serial_recovery_cbor.h
+++ b/boot/boot_serial/src/types_serial_recovery_cbor.h
@@ -1,11 +1,11 @@
/*
* This file has been generated from the cddl-gen submodule.
- * Commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+ * Commit 9f77837f9950da1633d22abf6181a830521a6688
*/
/*
* Generated with cddl_gen.py (https://github.com/NordicSemiconductor/cddl-gen)
- * at: 2021-05-10 09:40:43
+ * at: 2021-08-02 17:09:42
* Generated with a default_max_qty of 3
*/
diff --git a/ext/cddl-gen b/ext/cddl-gen
index 8f9358a..9f77837 160000
--- a/ext/cddl-gen
+++ b/ext/cddl-gen
@@ -1 +1 @@
-Subproject commit 8f9358a0b4b0e9b0cd579f0988056ef0b60760e4
+Subproject commit 9f77837f9950da1633d22abf6181a830521a6688