
With better compiler optimizations available, a compiler may see we do nothing with our buffer after calling memset and omit the call, thus causing us to not smash the stack. Add a comment to explain why we now also have a printf call, so that the test will pass as the memset will not be omitted.
Reported-by: Marek BehĂșn marek.behun@nic.cz Signed-off-by: Tom Rini trini@konsulko.com --- cmd/stackprot_test.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/cmd/stackprot_test.c b/cmd/stackprot_test.c index 36f5bac8d230..1e26193e88b0 100644 --- a/cmd/stackprot_test.c +++ b/cmd/stackprot_test.c @@ -9,9 +9,16 @@ static int do_test_stackprot_fail(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { + /* + * In order to avoid having the compiler optimize away the stack smashing + * we need to do a little something here. + */ char a[128];
memset(a, 0xa5, 512); + + printf("We have smashed our stack as this should not exceed 128: sizeof(a) = %ld\n", strlen(a)); + return 0; }