summaryrefslogtreecommitdiff
path: root/libguile/socket.c
diff options
context:
space:
mode:
authorNoah Lavine <nlavine@haverford.edu>2011-02-12 21:05:34 -0500
committerAndy Wingo <wingo@pobox.com>2011-02-13 21:04:00 +0100
commit333a81ccbadc7a81abec1aff4b5981b9fad3786b (patch)
tree9693fa7db5a5e6cfd7a4189053ca9718b93f085e /libguile/socket.c
parent5a79300f8596c4dc3ff71e9faa587531f76798f7 (diff)
downloadguile-333a81ccbadc7a81abec1aff4b5981b9fad3786b.tar.gz
zero newly allocated sockaddrs
* libguile/socket.c (scm_to_sockaddr, scm_fill_sockaddr): Zero the sockaddrs, so we do not pass uninitialized memory to the kernel.
Diffstat (limited to 'libguile/socket.c')
-rw-r--r--libguile/socket.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libguile/socket.c b/libguile/socket.c
index aa52cac51..d8ab005f5 100644
--- a/libguile/socket.c
+++ b/libguile/socket.c
@@ -796,6 +796,7 @@ scm_fill_sockaddr (int fam, SCM address, SCM *args, int which_arg,
port = scm_to_int (SCM_CAR (*args));
*args = SCM_CDR (*args);
soka = (struct sockaddr_in *) scm_malloc (sizeof (struct sockaddr_in));
+ memset (soka, '\0', sizeof (struct sockaddr_in));
#ifdef HAVE_STRUCT_SOCKADDR_SIN_LEN
soka->sin_len = sizeof (struct sockaddr_in);
@@ -1131,6 +1132,8 @@ scm_to_sockaddr (SCM address, size_t *address_size)
{
struct sockaddr_in c_inet;
+ memset (&c_inet, '\0', sizeof (struct sockaddr_in));
+
c_inet.sin_addr.s_addr =
htonl (scm_to_ulong (SCM_SIMPLE_VECTOR_REF (address, 1)));
c_inet.sin_port =