about summary refs log tree commit diff
path: root/inet/ether_line.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-12-07 16:50:11 +0000
committerUlrich Drepper <drepper@redhat.com>2007-12-07 16:50:11 +0000
commit26e21e7554ca5bbc719d5b018e26d5eb621c9e2e (patch)
treecba97f6eef732d9fbacf1cc5205f8e3eeeb8c1f1 /inet/ether_line.c
parentc9d65f0fbdf83d13e85a82d0b7b564d343a3c64b (diff)
downloadglibc-26e21e7554ca5bbc719d5b018e26d5eb621c9e2e.tar.gz
glibc-26e21e7554ca5bbc719d5b018e26d5eb621c9e2e.tar.xz
glibc-26e21e7554ca5bbc719d5b018e26d5eb621c9e2e.zip
[BZ #5441, BZ #5452, BZ #5454]
2007-12-07  Ulrich Drepper  <drepper@redhat.com>
	[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  <aurelien@aurel32.net>

	[BZ #5452]
	* sysdeps/unix/sysv/linux/bits/sched.h: Use __extension__
	  keyword for gcc's braced-groups.

2007-12-07  Ulrich Drepper  <drepper@redhat.com>

	[BZ #5454]
	* inet/ether_line.c: Strip hostname of whitespaces.
	* inet/Makefile (tests): Add tst-ether_line.
	* inet/tst-ether_line.c: New file.
Diffstat (limited to 'inet/ether_line.c')
-rw-r--r--inet/ether_line.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/inet/ether_line.c b/inet/ether_line.c
index 7e871a6bd7..13c5f394cf 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;
 }