From a029e60cfccaf3a2efbb4f33dd789030e15973b0 Mon Sep 17 00:00:00 2001 From: nattthebear Date: Sat, 26 Mar 2016 17:14:44 -0400 Subject: [PATCH] Per spec, if mouthbreather calls longjmp(buf, 0), return 1 instead --- waterbox/gpgx/gpgx.cbp | 9 +++++++++ waterbox/libc/functions/setjmp/setjmp.s | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/waterbox/gpgx/gpgx.cbp b/waterbox/gpgx/gpgx.cbp index 91c0494413..e780362c2e 100644 --- a/waterbox/gpgx/gpgx.cbp +++ b/waterbox/gpgx/gpgx.cbp @@ -248,6 +248,15 @@ + + + + + + + + + diff --git a/waterbox/libc/functions/setjmp/setjmp.s b/waterbox/libc/functions/setjmp/setjmp.s index 04cd48d187..1c53411ed3 100644 --- a/waterbox/libc/functions/setjmp/setjmp.s +++ b/waterbox/libc/functions/setjmp/setjmp.s @@ -34,7 +34,10 @@ setjmp: longjmp: movq %rsi, %rax /* Return value */ - + test %rax, %rax + jnz L0 + inc %rax /* if 0 was passed, send back 1 instead */ +L0: movq 8 (%rdi), %rbp cli