diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-04-02 08:05:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-04-02 08:05:36 +0000 |
commit | 750f9af6199e4a76e04c819b25dfcb58cf779b60 (patch) | |
tree | 7036afda0c826c43c367d3e62e6e1c68e320345c /sysdeps/unix/sysv/gethostname.c | |
parent | ad483238a1ef7bce6d8534a84ba548c455d1631e (diff) | |
download | glibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.zip glibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.tar.gz glibc-750f9af6199e4a76e04c819b25dfcb58cf779b60.tar.bz2 |
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.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/gethostname.c b/sysdeps/unix/sysv/gethostname.c index 95a9641..7065649 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; } |