summaryrefslogtreecommitdiff
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)
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;
}