From cacafeff9e17c4f67b8064db6fa87ca7efe8f291 Mon Sep 17 00:00:00 2001 From: Mickael GARDET Date: Mon, 2 Sep 2019 09:06:01 +0200 Subject: gresolv: Fix ASAN runtime error ../git/gweb/gresolv.c:331:7: runtime error: left shift of 169 by 24 places cannot be represented in type 'int' connmand2[3417]: eth0 {add} route 192.168.2.0 gw 0.0.0.0 scope 253 --- gweb/gresolv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gweb') diff --git a/gweb/gresolv.c b/gweb/gresolv.c index 38a554e0..954e7cfe 100644 --- a/gweb/gresolv.c +++ b/gweb/gresolv.c @@ -315,7 +315,8 @@ static int match_gai_table(struct sockaddr *sa, const struct gai_table *tbl) } } -#define DQUAD(_a,_b,_c,_d) ( ((_a)<<24) | ((_b)<<16) | ((_c)<<8) | (_d) ) +#define DQUAD(_a,_b,_c,_d) ( (((uint32_t)_a)<<24) | (((uint32_t)_b)<<16) | \ + (((uint32_t)_c)<<8) | ((uint32_t)_d) ) #define V4MATCH(addr, a,b,c,d, m) ( ((addr) ^ DQUAD(a,b,c,d)) >> (32 - (m)) ) #define RFC3484_SCOPE_LINK 2 @@ -326,7 +327,7 @@ static int addr_scope(struct sockaddr *sa) { if (sa->sa_family == AF_INET) { struct sockaddr_in *sin = (void *)sa; - guint32 addr = ntohl(sin->sin_addr.s_addr); + uint32_t addr = ntohl(sin->sin_addr.s_addr); if (V4MATCH(addr, 169,254,0,0, 16) || V4MATCH(addr, 127,0,0,0, 8)) -- cgit v1.2.1