summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen2004-02-04 10:48:37 +0000
committerEric Andersen2004-02-04 10:48:37 +0000
commit4575bbf7b846d9dfd6ff50bb4bc1f6f4ac31f3c0 (patch)
tree2341b9ef23d649087b3a48b35ba3cdd66087bea5
parent5b0d7deb751d1fb96fb14e30248f888c34f4dec2 (diff)
downloadbusybox-4575bbf7b846d9dfd6ff50bb4bc1f6f4ac31f3c0.zip
busybox-4575bbf7b846d9dfd6ff50bb4bc1f6f4ac31f3c0.tar.gz
The variable 'complementaly' used to be allocated with calloc, which zeroed it
out during the allocation process. When vodz changed it to be allocated on the stack, he forgot to explicitly zero it, leaving its value filled with whatever used to be sitting on the stack. It would garbage values, depending on the garbage that happened to be sitting on the stack when the function was called. The result was that applets using bb_getopt_ulflags() were showing unpredictable behavior (such as segfaults), which naturally broke many things.
-rw-r--r--libbb/getopt_ulflags.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libbb/getopt_ulflags.c b/libbb/getopt_ulflags.c
index 81d22c3..cca0743 100644
--- a/libbb/getopt_ulflags.c
+++ b/libbb/getopt_ulflags.c
@@ -88,6 +88,8 @@ bb_getopt_ulflags (int argc, char **argv, const char *applet_opts, ...)
t_complementaly *on_off;
va_list p;
+ memset(&complementaly, 0, sizeof(complementaly));
+
va_start (p, applet_opts);
/* skip GNU extension */