[libc-commits] [libc] [libc] wmemcmp nullptr handling (PR #142058)
via libc-commits
libc-commits at lists.llvm.org
Fri May 30 11:09:05 PDT 2025
https://github.com/sribee8 updated https://github.com/llvm/llvm-project/pull/142058
>From 24f44adc710616be3d93984ed02da48550f92581 Mon Sep 17 00:00:00 2001
From: Sriya Pratipati <sriyap at google.com>
Date: Thu, 29 May 2025 22:57:29 +0000
Subject: [PATCH 1/2] [libc] wmemcmp nullptr handling
Added nullptr handling for wmemcmp
---
libc/src/wchar/wmemcmp.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libc/src/wchar/wmemcmp.cpp b/libc/src/wchar/wmemcmp.cpp
index f2fa361c69798..374f3d5ddb627 100644
--- a/libc/src/wchar/wmemcmp.cpp
+++ b/libc/src/wchar/wmemcmp.cpp
@@ -12,11 +12,14 @@
#include "hdr/types/wchar_t.h"
#include "src/__support/common.h"
#include "src/__support/macros/config.h"
+#include "src/__support/macros/null_check.h" // LIBC_CRASH_ON_NULLPTR
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, wmemcmp,
(const wchar_t *s1, const wchar_t *s2, size_t n)) {
+ LIBC_CRASH_ON_NULLPTR(s1);
+ LIBC_CRASH_ON_NULLPTR(s2);
for (size_t i = 0; i < n; ++i) {
if (s1[i] != s2[i])
return (int)(s1[i] - s2[i]);
>From 86853d9bd05609cb336a4ad3ee1c7b93f97da16c Mon Sep 17 00:00:00 2001
From: Sriya Pratipati <sriyap at google.com>
Date: Fri, 30 May 2025 18:04:52 +0000
Subject: [PATCH 2/2] added null_check to depends and death tests
---
libc/src/wchar/CMakeLists.txt | 1 +
libc/test/src/wchar/wmemcmp_test.cpp | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/libc/src/wchar/CMakeLists.txt b/libc/src/wchar/CMakeLists.txt
index 43f571fed91af..fdcaeaf547317 100644
--- a/libc/src/wchar/CMakeLists.txt
+++ b/libc/src/wchar/CMakeLists.txt
@@ -67,4 +67,5 @@ add_entrypoint_object(
libc.hdr.types.size_t
libc.hdr.wchar_macros
libc.src.__support.wctype_utils
+ libc.src.__support.macros.null_check
)
diff --git a/libc/test/src/wchar/wmemcmp_test.cpp b/libc/test/src/wchar/wmemcmp_test.cpp
index 536299fd7daf0..9a07215851adc 100644
--- a/libc/test/src/wchar/wmemcmp_test.cpp
+++ b/libc/test/src/wchar/wmemcmp_test.cpp
@@ -66,3 +66,11 @@ TEST(LlvmLibcWMemcmpTest, LhsRhsAreTheSameLong) {
const wchar_t *rhs = L"aaaaaaaaaaaaaa";
EXPECT_EQ(LIBC_NAMESPACE::wmemcmp(lhs, rhs, 15), 0);
}
+
+TEST(LlvmLibcWMemcmpTest, NullptrCrash) {
+ // Passing in a nullptr should crash the program.
+ EXPECT_DEATH([] { LIBC_NAMESPACE::wmemcmp(L"aaaaaaaaaaaaaa", nullptr, 15); },
+ WITH_SIGNAL(-1));
+ EXPECT_DEATH([] { LIBC_NAMESPACE::wmemcmp(nullptr, L"aaaaaaaaaaaaaa", 15); },
+ WITH_SIGNAL(-1));
+}
More information about the libc-commits
mailing list