From: Willy Tarreau Date: Tue, 25 Feb 2020 09:02:51 +0000 (+0100) Subject: CLEANUP: lua: fix aliasing issues in the address matching code X-Git-Tag: v2.2-dev3~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=26474c486db8bfedcaede4742442070ea9e8c809;p=thirdparty%2Fhaproxy.git CLEANUP: lua: fix aliasing issues in the address matching code Just use read_u32() instead of casting IPv6 addresses to uint32_t*. --- diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c index f8024aa849..29c0bf4071 100644 --- a/src/hlua_fcn.c +++ b/src/hlua_fcn.c @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -1520,10 +1521,10 @@ int hlua_match_addr(lua_State *L) int i; for (i = 0; i < 16; i += 4) { - if ((*(uint32_t *)&addr1->addr.v6.ip.s6_addr[i] & - *(uint32_t *)&addr2->addr.v6.mask.s6_addr[i]) != - (*(uint32_t *)&addr2->addr.v6.ip.s6_addr[i] & - *(uint32_t *)&addr1->addr.v6.mask.s6_addr[i])) + if ((read_u32(&addr1->addr.v6.ip.s6_addr[i]) & + read_u32(&addr2->addr.v6.mask.s6_addr[i])) != + (read_u32(&addr2->addr.v6.ip.s6_addr[i]) & + read_u32(&addr1->addr.v6.mask.s6_addr[i]))) break; } if (i == 16) {