Fix error code for too small input buffer to getnameinfo

This commit is contained in:
Ulrich Drepper 2011-12-22 19:21:36 -05:00
parent e7f9dac362
commit 27deeafc3f
3 changed files with 14 additions and 9 deletions

View File

@ -1,5 +1,9 @@
2011-12-22 Ulrich Drepper <drepper@gmail.com>
[BZ #13166]
* inet/getnameinfo.c (getnameinfo): Return EAI_OVERFLOW if the
buffer for the output is too small.
* sysdeps/i386/fpu/bits/fenv.h [__SSE_MATH__]: Add feraiseexcept
optimization.

8
NEWS
View File

@ -11,10 +11,10 @@ Version 2.15
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13185,
13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335, 13337,
13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472, 13484,
13506, 13515, 13523, 13524, 13538, 13540
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166, 13179,
13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335,
13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472,
13484, 13506, 13515, 13523, 13524, 13538, 13540
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.

View File

@ -346,10 +346,11 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
"%u", scopeid);
if (real_hostlen + scopelen + 1 > hostlen)
/* XXX We should not fail here. Simply enlarge
the buffer or return with out of memory. */
return EAI_SYSTEM;
memcpy (host + real_hostlen, scopebuf, scopelen + 1);
/* Signal the buffer is too small. This is
what inet_ntop does. */
c = NULL;
else
memcpy (host + real_hostlen, scopebuf, scopelen + 1);
}
}
else
@ -357,7 +358,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
(const void *) &(((const struct sockaddr_in *) sa)->sin_addr),
host, hostlen);
if (c == NULL)
return EAI_SYSTEM;
return EAI_OVERFLOW;
}
ok = 1;
}