From 871613f271f028affbb2c71b307bd88daa9cf472 Mon Sep 17 00:00:00 2001 From: "Alan C. Assis" Date: Sun, 19 Jul 2020 15:25:47 +0000 Subject: [PATCH] libc: Typecast to avoid overflow in inet_addr for AVR Signed-off-by: Brennan Ashton --- libs/libc/net/lib_inetaddr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/libc/net/lib_inetaddr.c b/libs/libc/net/lib_inetaddr.c index e71ee8e011e..1b6db62bc44 100644 --- a/libs/libc/net/lib_inetaddr.c +++ b/libs/libc/net/lib_inetaddr.c @@ -102,7 +102,7 @@ in_addr_t inet_addr(FAR const char *cp) { if ((a < 0x100) && (b < 0x1000000)) { - result = (a << 24) | b; + result = (((uint32_t) a) << 24) | b; } break; } @@ -111,7 +111,7 @@ in_addr_t inet_addr(FAR const char *cp) { if ((a < 0x100) && (b < 0x100) && (c < 0x10000)) { - result = (a << 24) | (b << 16) | c; + result = (((uint32_t) a) << 24) | (((uint32_t) b) << 16) | c; } break; } @@ -120,7 +120,8 @@ in_addr_t inet_addr(FAR const char *cp) { if ((a < 0x100) && (b < 0x100) && (c < 0x100) && (d < 0x100)) { - result = (a << 24) | (b << 16) | (c << 8) | d; + result = (((uint32_t) a) << 24) | (((uint32_t) b) << 16) | + (((uint32_t) c) << 8) | d; } break; }