summaryrefslogtreecommitdiff
path: root/libguile/bitvectors.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-12-04 19:31:20 +0100
committerAndy Wingo <wingo@pobox.com>2010-12-04 19:31:20 +0100
commit3ef6650def28f7c29a2cc983086468d3195167d4 (patch)
tree17d477ff5489b1c29796495e8af32edb01a6ec77 /libguile/bitvectors.c
parent8556760c234b75e1faba956ba7b3b44175783459 (diff)
downloadguile-3ef6650def28f7c29a2cc983086468d3195167d4.tar.gz
make-string et al nulls memory if not given an initializer
* libguile/gc-malloc.c: Add a note that the gc-malloc does not clear the memory block, so users need to make sure it is initialized. * libguile/bitvectors.c (scm_c_make_bitvector): * libguile/bytevectors.c (scm_make_bytevector): * libguile/strings.c (scm_c_make_string): If no initializer is given, initialize the bytes to 0. Prevents information leakage if an app uses make-string et al without initializers. * libguile/foreign.c (make_cif): Initialize this too, to prevent leakage in the struct holes. Paranoia...
Diffstat (limited to 'libguile/bitvectors.c')
-rw-r--r--libguile/bitvectors.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c
index 67f5abdfb..65fc021d4 100644
--- a/libguile/bitvectors.c
+++ b/libguile/bitvectors.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009, 2010 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
@@ -117,6 +117,8 @@ scm_c_make_bitvector (size_t len, SCM fill)
if (!SCM_UNBNDP (fill))
scm_bitvector_fill_x (res, fill);
+ else
+ memset (bits, 0, sizeof (scm_t_uint32) * word_len);
return res;
}