about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/gethostname.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-04-02 08:05:36 +0000
committerUlrich Drepper <drepper@redhat.com>2000-04-02 08:05:36 +0000
commit750f9af6199e4a76e04c819b25dfcb58cf779b60 (patch)
tree7036afda0c826c43c367d3e62e6e1c68e320345c /sysdeps/unix/sysv/gethostname.c
parentad483238a1ef7bce6d8534a84ba548c455d1631e (diff)
downloadglibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.tar.gz
glibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.tar.xz
glibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.zip
Update.
	* posix/unistd.h (socklen_t): Define if it has not yet happened.
	(gethostname): Change type of second parameter to socklen_t.
	* include/unistd.h (__gethostname): Change type of second
	parameter to socklen_t.
	* sysdeps/generic/gethostname.c (__gethostname): Likewise.
	* sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise.
	* sysdeps/unix/sysv/gethostname.c (__gethostname): Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/gethostname.c (__gethostname):
	Likewise.
	* sysdeps/unix/sysv/linux/gethostname.c: Removed.
	* sysdeps/generic/bits/socket.h: Use __socklen_t to define socklen_t.
	Allow definition elsewhere.
	* sysdeps/unix/sysv/aix/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise.
	* sysdeps/generic/bits/types.h: Define __socklen_t.
	* sysdeps/unix/sysv/aix/bits/types.h: Likewise.
	* sysdeps/unix/sysv/hpux/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise.
Diffstat (limited to 'sysdeps/unix/sysv/gethostname.c')
-rw-r--r--sysdeps/unix/sysv/gethostname.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/gethostname.c b/sysdeps/unix/sysv/gethostname.c
index 95a9641971..706564957d 100644
--- a/sysdeps/unix/sysv/gethostname.c
+++ b/sysdeps/unix/sysv/gethostname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1997, 2000 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
@@ -17,6 +17,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/utsname.h>
 
@@ -26,12 +27,22 @@
 int
 __gethostname (name, len)
      char *name;
-     size_t len;
+     socklen_t len;
 {
   struct utsname buf;
+  size_t node_len;
+
   if (uname (&buf))
     return -1;
-  strncpy (name, buf.nodename, len);
+
+  node_len = strlen (buf.nodename) + 1;
+  if (node_len > len)
+    {
+      __set_errno (ENAMETOOLONG);
+      return -1;
+    }
+
+  memcpy (name, buf.nodename, node_len);
   return 0;
 }