]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Don't rely on in6_addr.s6_addr32, serialize IPv6 byte by byte
authorpcarana <pc.moreno2099@gmail.com>
Wed, 27 Mar 2019 21:34:03 +0000 (15:34 -0600)
committerpcarana <pc.moreno2099@gmail.com>
Wed, 27 Mar 2019 21:34:03 +0000 (15:34 -0600)
src/rtr/primitive_writer.c

index 0252de42083013834263dde92178cf44359dfa24..c2635eafe89a7edb171354a25d282e189cbdc721 100644 (file)
@@ -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;
 }