From bece68fbf704bb7f113467c515466815f907ffd2 Mon Sep 17 00:00:00 2001 From: Bahadir Balban Date: Mon, 25 May 2009 12:12:21 +0300 Subject: [PATCH] Fixed omission of if curly brackets causing stack corruption. Initialization a local pointer variable was only done in some conditions causing the uninitialized pointer to corrupt kernel stack of current. --- src/api/ipc.c | 3 ++- tasks/test0/include/tests.h | 2 +- tasks/test0/src/forktest.c | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/api/ipc.c b/src/api/ipc.c index 96bc10f..fd525d7 100644 --- a/src/api/ipc.c +++ b/src/api/ipc.c @@ -139,9 +139,10 @@ int ipc_msg_copy(struct ktcb *to, struct ktcb *from, unsigned int flags) } /* Save the sender id in case of ANYTHREAD receiver */ - if (to->expected_sender == L4_ANYTHREAD) + if (to->expected_sender == L4_ANYTHREAD) { mr0_dst = KTCB_REF_MR0(to); mr0_dst[MR_SENDER] = from->tid; + } return ret; } diff --git a/tasks/test0/include/tests.h b/tasks/test0/include/tests.h index 85054af..c2ade14 100644 --- a/tasks/test0/include/tests.h +++ b/tasks/test0/include/tests.h @@ -3,7 +3,7 @@ #define __TASKNAME__ "test0" -#define TEST_VERBOSE_PRINT +//#define TEST_VERBOSE_PRINT #if defined (TEST_VERBOSE_PRINT) #define test_printf(...) printf(__VA_ARGS__) #else diff --git a/tasks/test0/src/forktest.c b/tasks/test0/src/forktest.c index 8b26db6..57587f4 100644 --- a/tasks/test0/src/forktest.c +++ b/tasks/test0/src/forktest.c @@ -17,10 +17,11 @@ int forktest(void) /* 16 forks */ - for (int i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { test_printf("%d: Forking...\n", getpid()); if (fork() < 0) goto out_err; + } myid = getpid();