From: Martin Willi Date: Fri, 3 May 2013 12:17:37 +0000 (+0200) Subject: In memwipe_check(), don't put magic on stack when calling do_magic() X-Git-Url: http://git.strongswan.org/?p=strongswan.git;a=commitdiff_plain;h=9312fbc7 In memwipe_check(), don't put magic on stack when calling do_magic() Otherwise the magic might be on the stack while checking it. --- --- a/src/libstrongswan/library.c +++ b/src/libstrongswan/library.c @@ -154,7 +154,7 @@ static bool equals(char *a, char *b) * Write magic to memory, and try to clear it with memwipe() */ __attribute__((noinline)) -static void do_magic(int magic, int **stack) +static void do_magic(int *magic, int **stack) { int buf[32], i; @@ -162,7 +162,7 @@ static void do_magic(int magic, int **st *stack = &i; for (i = 0; i < countof(buf); i++) { - buf[i] = magic; + buf[i] = *magic; } /* passing buf to dbg should make sure the compiler can't optimize out buf. * we use directly dbg(3), as DBG3() might be stripped with DEBUG_LEVEL. */ @@ -177,7 +177,7 @@ static bool check_memwipe() { int magic = 0xCAFEBABE, *ptr, *deeper, i, stackdir = 1; - do_magic(magic, &deeper); + do_magic(&magic, &deeper); ptr = &magic; if (deeper < ptr)