From 264aad1e6aca30efddfcfae05c44ad38bb5e137d Mon Sep 17 00:00:00 2001 From: Ondřej Bílka Date: Thu, 17 Oct 2013 18:33:58 +0200 Subject: Fix inet_network("1 bar"). Fixes bug 15277. --- inet/inet_net.c | 22 +++++++++++++++++++++- inet/tst-network.c | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'inet') 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 + . */ + + #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}, -- cgit 1.4.1