aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-07 15:32:16 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-07 15:32:30 +0200
commit645e75f8038d1b177ead2d6ea0b3ade6f7f9d985 (patch)
treeabdb1ba3d8b7dff944d0ca84fc382bc0094f8635 /executor/executor.h
parent7fb9023fd78f6c0641624e3169c405e384f14691 (diff)
executor: make syscall table and number constant
We see some crashes that suggest corruption of the syscall number: invalid command number 1296 (errno 11) invalid command number 107 (errno 110) Make the table and the number constant to prevent corruption.
Diffstat (limited to 'executor/executor.h')
-rw-r--r--executor/executor.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/executor/executor.h b/executor/executor.h
index eb8474e4d..d5122cc71 100644
--- a/executor/executor.h
+++ b/executor/executor.h
@@ -165,7 +165,7 @@ struct kcov_comparison_t {
bool operator<(const struct kcov_comparison_t& other) const;
};
-long execute_syscall(call_t* c, long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8);
+long execute_syscall(const call_t* c, long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8);
thread_t* schedule_call(int call_index, int call_num, bool colliding, uint64 copyout_index, uint64 num_args, uint64* args, uint64* pos);
void handle_completion(thread_t* th);
void execute_call(thread_t* th);
@@ -393,7 +393,7 @@ retry:
}
// Normal syscall.
- if (call_num >= syscall_count)
+ if (call_num >= SYZ_SYSCALL_COUNT)
fail("invalid command number %llu", call_num);
uint64 copyout_index = read_input(&input_pos);
uint64 num_args = read_input(&input_pos);
@@ -634,7 +634,7 @@ void* worker_thread(void* arg)
void execute_call(thread_t* th)
{
event_reset(&th->ready);
- call_t* call = &syscalls[th->call_num];
+ const call_t* call = &syscalls[th->call_num];
debug("#%d: %s(", th->id, call->name);
for (int i = 0; i < th->num_args; i++) {
if (i != 0)