diff options
author | Nick Kralevich <nnk@google.com> | 2013-06-03 10:58:06 -0700 |
---|---|---|
committer | Nick Kralevich <nnk@google.com> | 2013-06-04 11:55:08 -0700 |
commit | 13476deec46d7ba101c1f76b8ddcaab9d0b96b84 (patch) | |
tree | 7b04e507eeb4ca2b169904d5657751b6d79cc961 /tests/string_test.cpp | |
parent | 0671393072a78e75a726c58aa3ca718e55eeac3e (diff) |
Add tests for __strcpy_chk()
Change-Id: I5675d04fcd471732c1b87b83879a54fbcd27762e
Diffstat (limited to 'tests/string_test.cpp')
-rw-r--r-- | tests/string_test.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/string_test.cpp b/tests/string_test.cpp index a0924dcb7..91d1904e8 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -209,6 +209,53 @@ TEST(string, strcat) { } } +// one byte target with "\0" source +TEST(string, strcpy2) { + char buf[1]; + char* orig = strdup(""); + strcpy(buf, orig); + ASSERT_EQ('\0', buf[0]); + free(orig); +} + +// multibyte target where we under fill target +TEST(string, strcpy3) { + char buf[10]; + char* orig = strdup("12345"); + memset(buf, 'A', sizeof(buf)); + strcpy(buf, orig); + ASSERT_EQ('1', buf[0]); + ASSERT_EQ('2', buf[1]); + ASSERT_EQ('3', buf[2]); + ASSERT_EQ('4', buf[3]); + ASSERT_EQ('5', buf[4]); + ASSERT_EQ('\0', buf[5]); + ASSERT_EQ('A', buf[6]); + ASSERT_EQ('A', buf[7]); + ASSERT_EQ('A', buf[8]); + ASSERT_EQ('A', buf[9]); + free(orig); +} + +// multibyte target where we fill target exactly +TEST(string, strcpy4) { + char buf[10]; + char* orig = strdup("123456789"); + memset(buf, 'A', sizeof(buf)); + strcpy(buf, orig); + ASSERT_EQ('1', buf[0]); + ASSERT_EQ('2', buf[1]); + ASSERT_EQ('3', buf[2]); + ASSERT_EQ('4', buf[3]); + ASSERT_EQ('5', buf[4]); + ASSERT_EQ('6', buf[5]); + ASSERT_EQ('7', buf[6]); + ASSERT_EQ('8', buf[7]); + ASSERT_EQ('9', buf[8]); + ASSERT_EQ('\0', buf[9]); + free(orig); +} + TEST(string, strcat2) { char buf[10]; memset(buf, 'A', sizeof(buf)); |