diff options
author | Eric Andersen | 2004-02-04 10:48:37 +0000 |
---|---|---|
committer | Eric Andersen | 2004-02-04 10:48:37 +0000 |
commit | 4575bbf7b846d9dfd6ff50bb4bc1f6f4ac31f3c0 (patch) | |
tree | 2341b9ef23d649087b3a48b35ba3cdd66087bea5 | |
parent | 5b0d7deb751d1fb96fb14e30248f888c34f4dec2 (diff) | |
download | busybox-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.c | 2 |
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 */ |