Skip to content

Commit 770fe67

Browse files
committed
synch with upstream a513b8e
Synchronized up to: mcu-tools/mcuboot@a513b8e - fix build issue caused by that CONFIG_LOG_MINIMAL was replaced by CONFIG_LOG_MODE_MINIMAL - imgtool: fix validation with protected TLVs Signed-off-by: Andrzej Puzdrowski <[email protected]>
2 parents 3f49b5a + a513b8e commit 770fe67

File tree

5 files changed

+44
-7
lines changed

5 files changed

+44
-7
lines changed

boot/zephyr/boards/circuitdojo_feather_nrf9160.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ CONFIG_CONSOLE=n
33
CONFIG_CONSOLE_HANDLER=n
44
CONFIG_UART_CONSOLE=n
55

6+
# Multithreading
7+
CONFIG_MULTITHREADING=y
8+
69
# MCUBoot settings
710
CONFIG_BOOT_MAX_IMG_SECTORS=256
811

@@ -11,3 +14,6 @@ CONFIG_MCUBOOT_SERIAL=y
1114
CONFIG_BOOT_SERIAL_DETECT_PORT="GPIO_0"
1215
CONFIG_BOOT_SERIAL_DETECT_PIN=12
1316
CONFIG_BOOT_SERIAL_DETECT_PIN_VAL=0
17+
18+
# Size of mcuboot partition
19+
CONFIG_SIZE_OPTIMIZATIONS=y
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Disable Zephyr console
2+
CONFIG_CONSOLE=n
3+
CONFIG_CONSOLE_HANDLER=n
4+
CONFIG_UART_CONSOLE=n
5+
6+
# Multithreading
7+
CONFIG_MULTITHREADING=y
8+
9+
# MCUBoot settings
10+
CONFIG_BOOT_MAX_IMG_SECTORS=256
11+
12+
# MCUboot serial recovery
13+
CONFIG_MCUBOOT_SERIAL=y
14+
CONFIG_BOOT_SERIAL_DETECT_PORT="GPIO_0"
15+
CONFIG_BOOT_SERIAL_DETECT_PIN=12
16+
CONFIG_BOOT_SERIAL_DETECT_PIN_VAL=0
17+
18+
# Size of mcuboot partition
19+
CONFIG_SIZE_OPTIMIZATIONS=y

boot/zephyr/main.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,14 @@ const struct boot_uart_funcs boot_funcs = {
5151
#include <arm_cleanup.h>
5252
#endif
5353

54+
/* CONFIG_LOG_MINIMAL is the legacy Kconfig property,
55+
* replaced by CONFIG_LOG_MODE_MINIMAL.
56+
*/
57+
#define ZEPHYR_LOG_MODE_MINIMAL (defined(CONFIG_LOG_MODE_MINIMAL) ||\
58+
defined(CONFIG_LOG_MINIMAL))
59+
5460
#if defined(CONFIG_LOG) && !defined(CONFIG_LOG_IMMEDIATE) && \
55-
!defined(CONFIG_LOG_MINIMAL)
61+
!ZEPHYR_LOG_MODE_MINIMAL
5662
#ifdef CONFIG_LOG_PROCESS_THREAD
5763
#warning "The log internal thread for log processing can't transfer the log"\
5864
"well for MCUBoot."
@@ -259,7 +265,7 @@ static void do_boot(struct boot_rsp *rsp)
259265
#endif
260266

261267
#if defined(CONFIG_LOG) && !defined(CONFIG_LOG_IMMEDIATE) &&\
262-
!defined(CONFIG_LOG_PROCESS_THREAD) && !defined(CONFIG_LOG_MINIMAL)
268+
!defined(CONFIG_LOG_PROCESS_THREAD) && !ZEPHYR_LOG_MODE_MINIMAL
263269
/* The log internal thread for log processing can't transfer log well as has too
264270
* low priority.
265271
* Dedicated thread for log processing below uses highest application

boot/zephyr/prj.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ CONFIG_FLASH=y
3131
# CONFIG_I2C is not set
3232

3333
CONFIG_LOG=y
34-
CONFIG_LOG_MINIMAL=y
34+
CONFIG_LOG_MODE_MINIMAL=y # former CONFIG_MODE_MINIMAL
3535
### Ensure Zephyr logging changes don't use more resources
3636
CONFIG_LOG_DEFAULT_LEVEL=0
3737
### Decrease footprint by ~4 KB in comparison to CBPRINTF_COMPLETE=y

scripts/imgtool/image.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -544,16 +544,22 @@ def verify(imgfile, key):
544544
if magic != IMAGE_MAGIC:
545545
return VerifyResult.INVALID_MAGIC, None, None
546546

547-
tlv_info = b[header_size+img_size:header_size+img_size+TLV_INFO_SIZE]
547+
tlv_off = header_size + img_size
548+
tlv_info = b[tlv_off:tlv_off+TLV_INFO_SIZE]
548549
magic, tlv_tot = struct.unpack('HH', tlv_info)
550+
if magic == TLV_PROT_INFO_MAGIC:
551+
tlv_off += tlv_tot
552+
tlv_info = b[tlv_off:tlv_off+TLV_INFO_SIZE]
553+
magic, tlv_tot = struct.unpack('HH', tlv_info)
554+
549555
if magic != TLV_INFO_MAGIC:
550556
return VerifyResult.INVALID_TLV_INFO_MAGIC, None, None
551557

552558
sha = hashlib.sha256()
553-
sha.update(b[:header_size+img_size])
559+
prot_tlv_size = tlv_off
560+
sha.update(b[:prot_tlv_size])
554561
digest = sha.digest()
555562

556-
tlv_off = header_size + img_size
557563
tlv_end = tlv_off + tlv_tot
558564
tlv_off += TLV_INFO_SIZE # skip tlv info
559565
while tlv_off < tlv_end:
@@ -569,7 +575,7 @@ def verify(imgfile, key):
569575
elif key is not None and tlv_type == TLV_VALUES[key.sig_tlv()]:
570576
off = tlv_off + TLV_SIZE
571577
tlv_sig = b[off:off+tlv_len]
572-
payload = b[:header_size+img_size]
578+
payload = b[:prot_tlv_size]
573579
try:
574580
if hasattr(key, 'verify'):
575581
key.verify(tlv_sig, payload)

0 commit comments

Comments
 (0)