1 // zero compression for the last field in an ipv6 address is (probably) allowed
2 // https://tools.ietf.org/html/rfc4291#section-2.2
3 // but further fields shouldnt buffer overflow
9 static void txt(char *s
, unsigned char *buf
)
12 sprintf(s
, "%04x", buf
[0]<<8 | buf
[1]);
14 sprintf(s
+5*i
, ":%04x", buf
[2*i
]<<8 | buf
[2*i
+1]);
20 unsigned char buf
[16];
21 unsigned char want
[16] = {0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,0};
24 addr
= "1:2:3:4:5:6:7::";
25 if (inet_pton(AF_INET6
, addr
, buf
)!=1 || memcmp(buf
, want
, 16)!=0) {
28 t_error("inet_pton(%s) returned %s, wanted %s\n",
32 addr
= "1:2:3:4:5:6:7::9:10:11:12:13:14:15:16:17:18:19:20";
33 if (inet_pton(AF_INET6
, addr
, buf
)!=0) {
35 t_error("inet_pton(%s) returned %s, wanted a failure\n",