diff options
Diffstat (limited to 'sysdeps/mach/hurd/getsockname.c')
-rw-r--r-- | sysdeps/mach/hurd/getsockname.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sysdeps/mach/hurd/getsockname.c b/sysdeps/mach/hurd/getsockname.c index ad447eec79..9d049630e6 100644 --- a/sysdeps/mach/hurd/getsockname.c +++ b/sysdeps/mach/hurd/getsockname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1994, 1997, 1999 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,18 +17,18 @@ Boston, MA 02111-1307, USA. */ #include <errno.h> +#include <string.h> #include <sys/socket.h> #include <hurd.h> #include <hurd/fd.h> #include <hurd/socket.h> -#include <string.h> /* Put the local address of FD into *ADDR and its length in *LEN. */ int getsockname (fd, addrarg, len) int fd; __SOCKADDR_ARG addrarg; - size_t *len; + socklen_t *len; { error_t err; struct sockaddr *addr = addrarg.__sockaddr__; @@ -46,10 +46,11 @@ getsockname (fd, addrarg, len) if (err) return __hurd_dfail (fd, err); + if (*len > buflen) + *len = buflen; + if (buf != (char *) addr) { - if (*len < buflen) - *len = buflen; memcpy (addr, buf, *len); __vm_deallocate (__mach_task_self (), (vm_address_t) buf, buflen); } |