OSDN Git Service

Fix FORTIFY_SOURCE unittests.
authorNick Kralevich <nnk@google.com>
Wed, 19 Jun 2013 17:25:44 +0000 (10:25 -0700)
committerNick Kralevich <nnk@google.com>
Wed, 19 Jun 2013 17:25:44 +0000 (10:25 -0700)
The compiler is too damn smart.

Change-Id: Ibef3ef41ec99f8cd9c06f1dbca535819f9a08197

tests/fortify1_test_clang.cpp
tests/fortify2_test_clang.cpp

index 2a1b8a7..0c0fb2b 100644 (file)
@@ -289,10 +289,14 @@ TEST(Fortify1_Clang, strcat2) {
 
 __BIONIC_FORTIFY_INLINE
 size_t test_fortify_inline(char* buf) {
-    return __bos(buf);
+  return __bos(buf);
 }
 
 TEST(Fortify1_Clang, fortify_inline) {
   char buf[1024];
-  ASSERT_EQ(test_fortify_inline(buf), sizeof(buf));
+  // no-op. Prints nothing. Needed to prevent the compiler
+  // from optimizing out buf.
+  buf[0] = '\0';
+  printf("%s", buf);
+  ASSERT_EQ(sizeof(buf), test_fortify_inline(buf));
 }
index 2abf85a..d8a0ba6 100644 (file)
@@ -162,10 +162,14 @@ TEST(Fortify2_Clang_DeathTest, strncpy_fortified) {
 
 __BIONIC_FORTIFY_INLINE
 size_t test_fortify2_inline(char* buf) {
-    return __bos(buf);
+  return __bos(buf);
 }
 
 TEST(Fortify2_Clang, fortify_inline) {
   char buf[1024];
-  ASSERT_EQ(test_fortify2_inline(buf), sizeof(buf));
+  // no-op. Prints nothing. Needed to prevent the compiler
+  // from optimizing out buf.
+  buf[0] = '\0';
+  printf("%s", buf);
+  ASSERT_EQ(sizeof(buf), test_fortify2_inline(buf));
 }