Skip to content

Commit 5570118

Browse files
committed
add a test case surfacing OOB access under sanitizers.
1 parent e1dae47 commit 5570118

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

libc/test/src/__support/str_to_integer_test.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ TEST(LlvmLibcStrToIntegerTest, LeadingSpaces) {
4949
EXPECT_EQ(result.parsed_len, ptrdiff_t(7));
5050
ASSERT_EQ(result.value, 12);
5151

52-
result = LIBC_NAMESPACE::internal::strtointeger<int>(" 12345", 10, 5);
52+
// Use a non-null-terminated buffer to test for possible OOB access.
53+
char buf[5] = {' ', ' ', ' ', ' ', ' '};
54+
result = LIBC_NAMESPACE::internal::strtointeger<int>(buf, 10, 5);
5355
EXPECT_FALSE(result.has_error());
5456
EXPECT_EQ(result.parsed_len, ptrdiff_t(0));
5557
ASSERT_EQ(result.value, 0);
5658

57-
result = LIBC_NAMESPACE::internal::strtointeger<int>(" 12345", 10, 0);
59+
result = LIBC_NAMESPACE::internal::strtointeger<int>(buf, 10, 0);
5860
EXPECT_FALSE(result.has_error());
5961
EXPECT_EQ(result.parsed_len, ptrdiff_t(0));
6062
ASSERT_EQ(result.value, 0);

libc/test/src/__support/wcs_to_integer_test.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,14 @@ TEST(LlvmLibcWcsToIntegerTest, LeadingSpaces) {
4848
EXPECT_EQ(result.parsed_len, ptrdiff_t(7));
4949
ASSERT_EQ(result.value, 12);
5050

51-
result = LIBC_NAMESPACE::internal::strtointeger<int>(L" 12345", 10, 5);
51+
// Use a non-null-terminated buffer to test for possible OOB access.
52+
wchar_t buf[5] = {L' ', L' ', L' ', L' ', L' '};
53+
result = LIBC_NAMESPACE::internal::strtointeger<int>(buf, 10, 5);
5254
EXPECT_FALSE(result.has_error());
5355
EXPECT_EQ(result.parsed_len, ptrdiff_t(0));
5456
ASSERT_EQ(result.value, 0);
5557

56-
result = LIBC_NAMESPACE::internal::strtointeger<int>(L" 12345", 10, 0);
58+
result = LIBC_NAMESPACE::internal::strtointeger<int>(buf, 10, 0);
5759
EXPECT_FALSE(result.has_error());
5860
EXPECT_EQ(result.parsed_len, ptrdiff_t(0));
5961
ASSERT_EQ(result.value, 0);

0 commit comments

Comments
 (0)