From 8cc145edf42ff8f0c10d5f2fd82ec99c6752e5ab Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Thu, 30 May 2013 13:21:14 -0700 Subject: [PATCH] Add strncpy FORTIFY_SOURCE tests. Change-Id: Id108b1d72b44d7e5fb911268e80bbdf896808f60 --- tests/fortify1_test.cpp | 16 ++++++++++++++++ tests/fortify2_test.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/tests/fortify1_test.cpp b/tests/fortify1_test.cpp index e23719309..70d458a08 100644 --- a/tests/fortify1_test.cpp +++ b/tests/fortify1_test.cpp @@ -60,3 +60,19 @@ TEST(Fortify1_DeathTest, sprintf_fortified) { memcpy(source_buf, "12345678901234", 15); ASSERT_EXIT(sprintf(buf, "%s", source_buf), testing::KilledBySignal(SIGSEGV), ""); } + +TEST(Fortify1_DeathTest, strncat_fortified) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + char buf[10]; + size_t n = atoi("10"); // avoid compiler optimizations + strncpy(buf, "012345678", n); + ASSERT_EXIT(strncat(buf, "9", n), testing::KilledBySignal(SIGSEGV), ""); +} + +TEST(Fortify1_DeathTest, strncat2_fortified) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + char buf[10]; + buf[0] = '\0'; + size_t n = atoi("10"); // avoid compiler optimizations + ASSERT_EXIT(strncat(buf, "0123456789", n), testing::KilledBySignal(SIGSEGV), ""); +} diff --git a/tests/fortify2_test.cpp b/tests/fortify2_test.cpp index ea890fe96..c937e91e7 100644 --- a/tests/fortify2_test.cpp +++ b/tests/fortify2_test.cpp @@ -64,6 +64,22 @@ TEST(Fortify2_DeathTest, strrchr_fortified2) { } #endif +TEST(Fortify2_DeathTest, strncat_fortified2) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + foo myfoo; + size_t n = atoi("10"); // avoid compiler optimizations + strncpy(myfoo.a, "012345678", n); + ASSERT_EXIT(strncat(myfoo.a, "9", n), testing::KilledBySignal(SIGSEGV), ""); +} + +TEST(Fortify2_DeathTest, strncat2_fortified2) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + foo myfoo; + myfoo.a[0] = '\0'; + size_t n = atoi("10"); // avoid compiler optimizations + ASSERT_EXIT(strncat(myfoo.a, "0123456789", n), testing::KilledBySignal(SIGSEGV), ""); +} + /***********************************************************/ /* TESTS BELOW HERE DUPLICATE TESTS FROM fortify1_test.cpp */ /***********************************************************/ @@ -106,3 +122,19 @@ TEST(Fortify2_DeathTest, sprintf_fortified) { memcpy(source_buf, "12345678901234", 15); ASSERT_EXIT(sprintf(buf, "%s", source_buf), testing::KilledBySignal(SIGSEGV), ""); } + +TEST(Fortify2_DeathTest, strncat_fortified) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + char buf[10]; + size_t n = atoi("10"); // avoid compiler optimizations + strncpy(buf, "012345678", n); + ASSERT_EXIT(strncat(buf, "9", n), testing::KilledBySignal(SIGSEGV), ""); +} + +TEST(Fortify2_DeathTest, strncat2_fortified) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + char buf[10]; + buf[0] = '\0'; + size_t n = atoi("10"); // avoid compiler optimizations + ASSERT_EXIT(strncat(buf, "0123456789", n), testing::KilledBySignal(SIGSEGV), ""); +}