busybox
Variable 'info' is uninitialized when BusyBox is compiled with BB_FEATURE_LS_FILETYPES && !BB_FEATURE_LS_USERNAME.
Bug fixed by commit b273d665181
| Type | UninitializedVariable |
| Config | BB_FEATURE_LS_FILETYPES && !BB_FEATURE_LS_USERNAME (2nd degree) |
| C-features | Structs |
| Fix-in | mapping |
| Location | coreutils/ |
#include <stdio.h>
#include <stdlib.h>
void list_single()
{
#ifdef BB_FEATURE_LS_FILETYPES
int info;
#endif
#ifdef BB_FEATURE_LS_USERNAME
info = 0;
#endif
#ifdef BB_FEATURE_LS_FILETYPES
if (rand() % 2)
printf("%d", info); // ERROR
#endif
}
void showfiles()
{
list_single();
}
int main(int argc, char** argv)
{
showfiles();
return 0;
}
diff --git a/simple/b273d66.c b/simple/b273d66.c
--- a/simple/b273d66.c
+++ b/simple/b273d66.c
@@ -4,7 +4,7 @@
void list_single()
{
-#ifdef BB_FEATURE_LS_FILETYPES
+#if defined (BB_FEATURE_LS_FILETYPES) || defined (BB_FEATURE_LS_USERNAME)
int info;
#endif
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
// showfiles();
#ifdef BB_FEATURE_LS_FILETYPES
int info;
#endif
#ifdef BB_FEATURE_LS_USERNAME
info = 0;
#endif
#ifdef BB_FEATURE_LS_FILETYPES
if (rand() % 2)
printf("%d", info); // ERROR
#endif
return 0;
}
. call coreutils/ls.c:823:showfiles() .. 424:list_single(dn[i]); .. call coreutils/ls.c:524:list_single() ... [BB_FEATURE_LS_FILETYPES] 533:struct stat info; ... [BB_FEATURE_LS_USERNAME] 574:memset(&info, 0, sizeof(struct stat)); ... ERROR [BB_FEATURE_LS_FILETYPES] 645:append = append_char(info.st_mode);