Add a checksum to jmp_buf on ARM.
Make it easier to diagnose applications mucking with the contents of
jmp_buf by checksumming its contents.
Bug: http://b/27417786
Change-Id: I9989e2ea3979a36ae0bc4c9e1bacafddbacc731b
diff --git a/tests/setjmp_test.cpp b/tests/setjmp_test.cpp
index c75ab51..b7e856f 100644
--- a/tests/setjmp_test.cpp
+++ b/tests/setjmp_test.cpp
@@ -247,3 +247,17 @@
*sigflag &= 1;
EXPECT_DEATH(longjmp(jb, 0), "");
}
+
+TEST(setjmp, setjmp_cookie_checksum) {
+ jmp_buf jb;
+ int value = setjmp(jb);
+
+ if (value == 0) {
+ // Flip a bit.
+ reinterpret_cast<long*>(jb)[0] ^= 1;
+
+ EXPECT_DEATH(longjmp(jb, 1), "checksum mismatch");
+ } else {
+ fprintf(stderr, "setjmp_cookie_checksum: longjmp succeeded?");
+ }
+}