From: pcarana Date: Wed, 27 Mar 2019 21:34:03 +0000 (-0600) Subject: Don't rely on in6_addr.s6_addr32, serialize IPv6 byte by byte X-Git-Tag: v0.0.2~52^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29d542a78aa712a59e548cc5ea5fcd08129a1484;p=thirdparty%2FFORT-validator.git Don't rely on in6_addr.s6_addr32, serialize IPv6 byte by byte --- diff --git a/src/rtr/primitive_writer.c b/src/rtr/primitive_writer.c index 0252de42..c2635eaf 100644 --- a/src/rtr/primitive_writer.c +++ b/src/rtr/primitive_writer.c @@ -36,8 +36,9 @@ write_in_addr(char *buf, struct in_addr value) char * write_in6_addr(char *buf, struct in6_addr value) { - buf = write_int32(buf, ntohl(value.s6_addr32[3])); - buf = write_int32(buf, ntohl(value.s6_addr32[2])); - buf = write_int32(buf, ntohl(value.s6_addr32[1])); - return write_int32(buf, ntohl(value.s6_addr32[0])); + int i; + for (i = 0; i < 16; i++) + buf = write_int8(buf, value.s6_addr[i]); + + return buf; }