From 8c098f69740beec08bd1300376df29b810028178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Thu, 6 Feb 2020 09:14:53 +0100 Subject: [PATCH] utils: Fix invalid implicit conversion Which fixes a potential integer overflow in read_u32 --- include/utils.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/utils.h b/include/utils.h index 939e518..988b3b5 100644 --- a/include/utils.h +++ b/include/utils.h @@ -80,8 +80,8 @@ static inline uint8_t *write_raw(uint8_t *p, const uint8_t *v) static inline const uint8_t *read_u16(const uint8_t *p, size_t *s, uint16_t *v) { *v = 0; - *v |= *p++ << 8; - *v |= *p++ << 0; + *v |= (uint16_t)*p++ << 8; + *v |= (uint16_t)*p++ << 0; *s -= 2; return (p); } @@ -89,10 +89,10 @@ static inline const uint8_t *read_u16(const uint8_t *p, size_t *s, uint16_t *v) static inline const uint8_t *read_u32(const uint8_t *p, size_t *s, uint32_t *v) { *v = 0; - *v |= *p++ << 24; - *v |= *p++ << 16; - *v |= *p++ << 8; - *v |= *p++ << 0; + *v |= (uint32_t)*p++ << 24; + *v |= (uint32_t)*p++ << 16; + *v |= (uint32_t)*p++ << 8; + *v |= (uint32_t)*p++ << 0; *s -= 4; return (p); }