33d994c54a
git-svn-id: svn://svn.openwrt.org/openwrt/packages@36649 3c298f89-4303-0410-b956-a3cf2f4a3e73
40 lines
1.2 KiB
Diff
40 lines
1.2 KiB
Diff
From: Martin Willi <martin@revosec.ch>
|
|
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)
|