From 8f24f9f82cd5b107cf4fbab40ce2ae7159fd2d2d Mon Sep 17 00:00:00 2001 From: a2-stratford <alexander3.stratford@live.uwe.ac.uk> Date: Mon, 2 Dec 2019 13:53:36 +0000 Subject: [PATCH] Update populate_stack.c --- userprog/populate_stack.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/userprog/populate_stack.c b/userprog/populate_stack.c index 36acb8c..d66e30e 100644 --- a/userprog/populate_stack.c +++ b/userprog/populate_stack.c @@ -24,25 +24,27 @@ void populate_stack(void* stack_pointer, int argc, char** argv) { memcpy(*stack_pointer, argv[i], strlen(argv[i]) + 1); } - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 (*(int *)(*stack_pointer)) = 0;//sentinel i = argc; while (--i >= 0) { - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //32bit Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //32bit Moves the stack pointer back 4 (*(uint32_t **)(*stack_pointer)) = arr[i]; } - - *stack_pointer = move_stack_pointer(*stack_pointer, -4); - - (*(uintptr_t **)(*stack_pointer)) = *stack_pointer = move_stack_pointer(*stack_pointer, 4); //Moves the stack pointer forwards 4 - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + + move_stack_pointer(*stack_pointer, -4); + move_stack_pointer(*stack_pointer, 4); //Moves the stack pointer forwards 4 + // TODO: Test if still required in later version + + (*(uintptr_t **)(*stack_pointer)) = *stack_pointer + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 *(int *)(*stack_pointer) = argc; - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 (*(int *)(*stack_pointer)) = 0; } -- GitLab