The variable 'complementaly' used to be allocated with calloc, which zeroed it
authorEric Andersen <andersen@codepoet.org>
Wed, 4 Feb 2004 10:48:37 +0000 (10:48 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 4 Feb 2004 10:48:37 +0000 (10:48 -0000)
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.

libbb/getopt_ulflags.c

index 81d22c3fe83c182680a1c96a59ef1ba853252b36..cca0743bd5c24cd447b12f9e7d1206f49c8fa58d 100644 (file)
@@ -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 */