Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Avoid infinite loop in nss_dns getnetbyname [BZ #17630]
  • Loading branch information
Florian Weimer committed Dec 16, 2014
1 parent ae61fc7 commit 11e3417
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
@@ -1,3 +1,9 @@
2014-12-16 Florian Weimer <fweimer@redhat.com>

[BZ #17630]
* resolv/nss_dns/dns-network.c (getanswer_r): Iterate over alias
names.

2014-12-16 Allan McRae <allan@archlinux.org>

* stdio-common/Makefile (tests): Re-add bug26.
Expand Down
7 changes: 5 additions & 2 deletions NEWS
Expand Up @@ -13,8 +13,8 @@ Version 2.21
15884, 16469, 16617, 16619, 16657, 16740, 16857, 17192, 17266, 17344,
17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508,
17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583,
17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17633, 17634,
17647, 17653, 17657, 17664, 17665, 17668, 17682.
17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633,
17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682.

* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
under certain input conditions resulting in the execution of a shell for
Expand All @@ -25,6 +25,9 @@ Version 2.21
* CVE-2012-3406 printf-style functions could run into a stack overflow when
processing format strings with a large number of format specifiers.

* The nss_dns implementation of getnetbyname could run into an infinite loop
if the DNS response contained a PTR record of an unexpected format.

* The minimum GCC version that can be used to build this version of the GNU
C Library is GCC 4.6. Older GCC versions, and non-GNU compilers, can
still be used to compile programs using the GNU C Library.
Expand Down
4 changes: 2 additions & 2 deletions resolv/nss_dns/dns-network.c
Expand Up @@ -398,8 +398,8 @@ getanswer_r (const querybuf *answer, int anslen, struct netent *result,

case BYNAME:
{
char **ap = result->n_aliases++;
while (*ap != NULL)
char **ap;
for (ap = result->n_aliases; *ap != NULL; ++ap)
{
/* Check each alias name for being of the forms:
4.3.2.1.in-addr.arpa = net 1.2.3.4
Expand Down

0 comments on commit 11e3417

Please sign in to comment.