Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
glibc/resolv/tst-inet_ntop.c
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
114 lines (102 sloc)
2.47 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <arpa/inet.h> | |
#include <errno.h> | |
#include <netinet/in.h> | |
#include <stdio.h> | |
#include <string.h> | |
static int | |
do_test (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; | |
} | |
#define TEST_FUNCTION do_test () | |
#include "../test-skeleton.c" |