about summary refs log tree commit diff
path: root/inet
diff options
context:
space:
mode:
authorOndřej Bílka <neleai@seznam.cz>2013-10-17 18:33:58 +0200
committerOndřej Bílka <neleai@seznam.cz>2013-10-17 18:34:29 +0200
commit264aad1e6aca30efddfcfae05c44ad38bb5e137d (patch)
treec0d35a4dab6547e4cd4fc595ee389608ac9bcd45 /inet
parentb957ced8890a4438c8efe2c15e5abf4e327f25cf (diff)
downloadglibc-264aad1e6aca30efddfcfae05c44ad38bb5e137d.tar.gz
glibc-264aad1e6aca30efddfcfae05c44ad38bb5e137d.tar.xz
glibc-264aad1e6aca30efddfcfae05c44ad38bb5e137d.zip
Fix inet_network("1 bar"). Fixes bug 15277.
Diffstat (limited to 'inet')
-rw-r--r--inet/inet_net.c22
-rw-r--r--inet/tst-network.c1
2 files changed, 22 insertions, 1 deletions
diff --git a/inet/inet_net.c b/inet/inet_net.c
index 68e232f3d3..5d61c75820 100644
--- a/inet/inet_net.c
+++ b/inet/inet_net.c
@@ -27,6 +27,24 @@
  * SUCH DAMAGE.
  */
 
+/* Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+
 #if defined(LIBC_SCCS) && !defined(lint)
 static char sccsid[] = "@(#)inet_network.c	8.1 (Berkeley) 6/4/93";
 #endif /* LIBC_SCCS and not lint */
@@ -81,7 +99,9 @@ again:
 		*pp++ = val, cp++;
 		goto again;
 	}
-	if (*cp && !isspace(*cp))
+	while (isspace(*cp))
+		cp++;
+	if (*cp)
 		return (INADDR_NONE);
 	if (pp >= parts + 4 || val > 0xff)
 		return (INADDR_NONE);
diff --git a/inet/tst-network.c b/inet/tst-network.c
index 6b79e62df6..2eefb0c04a 100644
--- a/inet/tst-network.c
+++ b/inet/tst-network.c
@@ -38,6 +38,7 @@ struct
   {"0x0", 0},
   /* Now some invalid addresses.  */
   {"0x", INADDR_NONE},
+  {"1 bar", INADDR_NONE}, /* Bug 15277.  */
   {"141.30.225.2800", INADDR_NONE},
   {"141.76.1.1.1", INADDR_NONE},
   {"141.76.1.11.", INADDR_NONE},