diff options
author | Mark H Weaver <mhw@netris.org> | 2015-11-13 11:38:13 -0500 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2016-05-22 19:52:36 +0200 |
commit | 7d7e4bc6c0e9a109eafc68ae7e5494f6a1dcaab9 (patch) | |
tree | e1b91ee1dc3b8fd28932a037b31ed5524318d386 /libguile/socket.c | |
parent | cfd4401a2ca723a6984e1ba2739e064bdca76199 (diff) |
Fix getsockopt/setsockopt handling of SO_SNDBUF/SO_RCVBUF options.
Reported by Park SungMin <byulparan_eng@icloud.com>
in <https://lists.gnu.org/archive/html/guile-user/2015-11/msg00026.html>.
* libguile/socket.c (scm_getsockopt, scm_setsockopt): Remove code that
incorrectly assumed that the argument for SO_SNDBUF and SO_RCVBUF
options was of type 'size_t'. Both the Linux and POSIX documentation
indicates that the argument is of type 'int', as is the case for most
options.
Diffstat (limited to 'libguile/socket.c')
-rw-r--r-- | libguile/socket.c | 30 |
1 files changed, 2 insertions, 28 deletions
diff --git a/libguile/socket.c b/libguile/socket.c index 2a9be5471..a6f1e5fca 100644 --- a/libguile/socket.c +++ b/libguile/socket.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, - * 2006, 2007, 2009, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. +/* Copyright (C) 1996-1998, 2000-2007, 2009, 2011-2015 + * Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -508,19 +508,7 @@ SCM_DEFINE (scm_getsockopt, "getsockopt", 3, 0, 0, scm_from_int (0)); #endif } - else #endif - if (0 -#ifdef SO_SNDBUF - || ioptname == SO_SNDBUF -#endif -#ifdef SO_RCVBUF - || ioptname == SO_RCVBUF -#endif - ) - { - return scm_from_size_t (*(size_t *) &optval); - } } return scm_from_int (*(int *) &optval); } @@ -649,21 +637,7 @@ SCM_DEFINE (scm_setsockopt, "setsockopt", 4, 0, 0, optval = &opt_int; #endif } - else #endif - if (0 -#ifdef SO_SNDBUF - || ioptname == SO_SNDBUF -#endif -#ifdef SO_RCVBUF - || ioptname == SO_RCVBUF -#endif - ) - { - opt_int = scm_to_int (value); - optlen = sizeof (size_t); - optval = &opt_int; - } } #ifdef HAVE_STRUCT_IP_MREQ |