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
