busybox
The integer variable k_crcs is undeclared when BusyBox is compiled with !FEATURE_INSMOD_VERSION_CHECKING
Bug fixed by commit 5275b1e49f6
| Type | UndeclaredIdentifier |
| Config | !FEATURE_INSMOD_VERSION_CHECKING (1st degree) |
| Fix-in | code |
| Location | modutils/ |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int r = rand() % 2;
int m_has_modinfo;
int exit_status = -1;
int someInt = 1;
#ifdef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
int k_crcs;
#endif
if (r)
m_has_modinfo = 0;
else
m_has_modinfo = 1;
#ifdef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
k_crcs = 0;
#endif
if (r) {
k_crcs = someInt;
} else {
printf("Not configured to support old kernels");
goto out;
}
out:
return(exit_status);
return 0;
}
diff --git a/simple/5275b1e.c b/simple/5275b1e.c
--- a/simple/5275b1e.c
+++ b/simple/5275b1e.c
@@ -8,9 +8,7 @@
int exit_status = -1;
int someInt = 1;
-#ifdef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
int k_crcs;
-#endif
if (r)
m_has_modinfo = 0;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int r = rand() % 2;
int m_has_modinfo;
int exit_status = -1;
int someInt = 1;
#ifdef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
int k_crcs;
#endif
if (r)
m_has_modinfo = 0;
else
m_has_modinfo = 1;
#ifdef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
k_crcs = 0;
#endif
if (r) {
k_crcs = someInt;
} else {
printf("Not configured to support old kernels");
goto out;
}
out:
return(exit_status);
return 0;
}
. call modutils/insmod.c:3606:insmod_main(); . [FEATURE_INSMOD_VERSION_CHECKING] 3622:int k_crcs; . ERROR 3833:k_crcs = new_is_kernel_checksummed();