diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-05-04 10:05:57 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-05-04 10:05:57 +0000 |
commit | 2a0a747e57ec96bab9d4a6b7c0b32df82a41316e (patch) | |
tree | 002d92f89d7109abc1c2ebe7f113f8dee0dc3034 /resolv/tst-inet_ntop.c | |
parent | af5726aed8a0c87d7f29570641cf0acb6a92f918 (diff) | |
download | glibc-2a0a747e57ec96bab9d4a6b7c0b32df82a41316e.tar.gz glibc-2a0a747e57ec96bab9d4a6b7c0b32df82a41316e.tar.xz glibc-2a0a747e57ec96bab9d4a6b7c0b32df82a41316e.zip |
Updated to fedora-glibc-20070504T0917 cvs/fedora-glibc-2_5_90-22
Diffstat (limited to 'resolv/tst-inet_ntop.c')
-rw-r--r-- | resolv/tst-inet_ntop.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/resolv/tst-inet_ntop.c b/resolv/tst-inet_ntop.c new file mode 100644 index 0000000000..a042c74c91 --- /dev/null +++ b/resolv/tst-inet_ntop.c @@ -0,0 +1,111 @@ +#include <arpa/inet.h> +#include <errno.h> +#include <netinet/in.h> +#include <stdio.h> +#include <string.h> + +int +main (void) +{ + struct in_addr addr4; + struct in6_addr addr6; + char buf[64]; + int result = 0; + + addr4.s_addr = 0xe0e0e0e0; + addr6.s6_addr16[0] = 0; + addr6.s6_addr16[1] = 0; + addr6.s6_addr16[2] = 0; + addr6.s6_addr16[3] = 0; + addr6.s6_addr16[4] = 0; + addr6.s6_addr16[5] = 0xffff; + addr6.s6_addr32[3] = 0xe0e0e0e0; + memset (buf, 'x', sizeof buf); + + if (inet_ntop (AF_INET, &addr4, buf, 15) != NULL) + { + puts ("1st inet_ntop returned non-NULL"); + result++; + } + else if (errno != ENOSPC) + { + puts ("1st inet_ntop didn't fail with ENOSPC"); + result++; + } + if (buf[15] != 'x') + { + puts ("1st inet_ntop wrote past the end of buffer"); + result++; + } + + if (inet_ntop (AF_INET, &addr4, buf, 16) != buf) + { + puts ("2nd inet_ntop did not return buf"); + result++; + } + if (memcmp (buf, "224.224.224.224\0" "xxxxxxxx", 24) != 0) + { + puts ("2nd inet_ntop wrote past the end of buffer"); + result++; + } + + if (inet_ntop (AF_INET6, &addr6, buf, 22) != NULL) + { + puts ("3rd inet_ntop returned non-NULL"); + result++; + } + else if (errno != ENOSPC) + { + puts ("3rd inet_ntop didn't fail with ENOSPC"); + result++; + } + if (buf[22] != 'x') + { + puts ("3rd inet_ntop wrote past the end of buffer"); + result++; + } + + if (inet_ntop (AF_INET6, &addr6, buf, 23) != buf) + { + puts ("4th inet_ntop did not return buf"); + result++; + } + if (memcmp (buf, "::ffff:224.224.224.224\0" "xxxxxxxx", 31) != 0) + { + puts ("4th inet_ntop wrote past the end of buffer"); + result++; + } + + memset (&addr6.s6_addr, 0xe0, sizeof (addr6.s6_addr)); + + if (inet_ntop (AF_INET6, &addr6, buf, 39) != NULL) + { + puts ("5th inet_ntop returned non-NULL"); + result++; + } + else if (errno != ENOSPC) + { + puts ("5th inet_ntop didn't fail with ENOSPC"); + result++; + } + if (buf[39] != 'x') + { + puts ("5th inet_ntop wrote past the end of buffer"); + result++; + } + + if (inet_ntop (AF_INET6, &addr6, buf, 40) != buf) + { + puts ("6th inet_ntop did not return buf"); + result++; + } + if (memcmp (buf, "e0e0:e0e0:e0e0:e0e0:e0e0:e0e0:e0e0:e0e0\0" + "xxxxxxxx", 48) != 0) + { + puts ("6th inet_ntop wrote past the end of buffer"); + result++; + } + + + return result; +} |