From 26e21e7554ca5bbc719d5b018e26d5eb621c9e2e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 7 Dec 2007 16:50:11 +0000 Subject: [BZ #5441, BZ #5452, BZ #5454] 2007-12-07 Ulrich Drepper [BZ #5441] * stdio-common/vfscanf.c (_IO_vfwscanf): Don't free ptrs_to_free structure, it's allocated with alloca. * stdio-common/Makefile (tests): Add bug21. * stdio-common/bug21.c: New file. 2007-12-06 Aurelien Jarno [BZ #5452] * sysdeps/unix/sysv/linux/bits/sched.h: Use __extension__ keyword for gcc's braced-groups. 2007-12-07 Ulrich Drepper [BZ #5454] * inet/ether_line.c: Strip hostname of whitespaces. * inet/Makefile (tests): Add tst-ether_line. * inet/tst-ether_line.c: New file. --- inet/ether_line.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'inet/ether_line.c') diff --git a/inet/ether_line.c b/inet/ether_line.c index 7e871a6..13c5f39 100644 --- a/inet/ether_line.c +++ b/inet/ether_line.c @@ -61,19 +61,20 @@ ether_line (const char *line, struct ether_addr *addr, char *hostname) ++line; } - /* Remove trailing white space. */ - cp = __strchrnul (line, '#'); - while (cp > line && isspace (cp[-1])) - --cp; + /* Skip initial whitespace. */ + while (isspace (*line)) + ++line; - if (cp == line) + if (*line == '#' || *line == '\0') /* No hostname. */ return -1; + /* The hostname is up to the next non-space character. */ /* XXX This can cause trouble because the hostname might be too long but we have no possibility to check it here. */ - memcpy (hostname, line, cp - line); - hostname [cp - line] = '\0'; + while (*line != '\0' && *line != '#' && !isspace (*line)) + *hostname++ = *line++; + *hostname = '\0'; return 0; } -- cgit v1.1