This patch fixes random selection of system calls, introduced in the earlier commit. Signed-off-by: Ildar Muslukhov <ildarm@xxxxxxxxxx> --- tables.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tables.c b/tables.c index f41ffac..618d742 100644 --- a/tables.c +++ b/tables.c @@ -15,6 +15,8 @@ #include "log.h" #include "shm.h" +#define NOTFOUND (unsigned int)-1 + const struct syscalltable *syscalls; const struct syscalltable *syscalls_32bit; const struct syscalltable *syscalls_64bit; @@ -813,9 +815,7 @@ void disable_non_net_syscalls(void) void enable_random_syscalls(void) { unsigned int i; - unsigned int call, call32, call64, callnotfound; - - callnotfound = (unsigned int)-1; + unsigned int call, call32, call64; if (random_selection_num == 0) { printf("-r 0 syscalls ? what?\n"); @@ -840,8 +840,8 @@ void enable_random_syscalls(void) retry: if (biarch == TRUE) { - call64 = callnotfound; - call32 = callnotfound; + call64 = NOTFOUND; + call32 = NOTFOUND; //Search for 64 bit version if (do_64_arch) { @@ -853,11 +853,11 @@ retry: if (is_syscall_net_related(syscalls_64bit, call64) == FALSE) goto retry; - if (syscalls_64bit[call64].entry->flags & TO_BE_DEACTIVATED) + if ((syscalls_64bit[call64].entry->flags & TO_BE_DEACTIVATED) || (syscalls_64bit[call64].entry->active_number != 0)) goto try32bit; //If we got so far, then active it. - toggle_syscall_biarch_n(i, syscalls_64bit, TRUE, do_64_arch, TRUE, + toggle_syscall_biarch_n(call64, syscalls_64bit, TRUE, do_64_arch, TRUE, &activate_syscall64, 64, syscalls_64bit[call64].entry->name); } try32bit: @@ -867,35 +867,35 @@ try32bit: if (do_64_arch) { call32 = search_syscall_table(syscalls_32bit, max_nr_32bit_syscalls, syscalls_64bit[call64].entry->name); if (syscalls_64bit[call64].entry->flags & TO_BE_DEACTIVATED) - call64 = callnotfound; //mark as not found in order not to increment i. + call64 = NOTFOUND; //mark as not found in order not to increment i. } else { call32 = rand() % max_nr_32bit_syscalls; } if (validate_specific_syscall_silent(syscalls_32bit, call32) == FALSE) { - if (call64 == callnotfound) + if (call64 == NOTFOUND) goto retry; else continue; } if (no_files == TRUE) - if (is_syscall_net_related(syscalls_64bit, call64) == FALSE) { - if (call64 == callnotfound) + if (is_syscall_net_related(syscalls_32bit, call32) == FALSE) { + if (call64 == NOTFOUND) goto retry; else continue; } - if (syscalls_64bit[call64].entry->flags & TO_BE_DEACTIVATED) { - if (call64 == callnotfound) + if ((syscalls_32bit[call32].entry->flags & TO_BE_DEACTIVATED) || (syscalls_32bit[call32].entry->active_number != 0)) { + if (call64 == NOTFOUND) goto retry; else continue; } //If we got so far, then active it. - toggle_syscall_biarch_n(i, syscalls_32bit, TRUE, do_32_arch, TRUE, + toggle_syscall_biarch_n(call32, syscalls_32bit, TRUE, do_32_arch, TRUE, &activate_syscall32, 32, syscalls_32bit[call32].entry->name); } -- 1.8.4 -- To unsubscribe from this list: send the line "unsubscribe trinity" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html