[libc-commits] [libc] 45c2974 - [libc] added nullptr checks for wcspbrk (#142216)

via libc-commits libc-commits at lists.llvm.org
Mon Jun 2 15:20:56 PDT 2025


Author: Uzair Nawaz
Date: 2025-06-02T15:20:53-07:00
New Revision: 45c297428acbf74c088c3bf6977c83369dbc42f2

URL: https://github.com/llvm/llvm-project/commit/45c297428acbf74c088c3bf6977c83369dbc42f2
DIFF: https://github.com/llvm/llvm-project/commit/45c297428acbf74c088c3bf6977c83369dbc42f2.diff

LOG: [libc] added nullptr checks for wcspbrk (#142216)

Added CRASH_ON_NULLPTR macro to wcspbrk function and related test

Added: 
    

Modified: 
    libc/src/wchar/CMakeLists.txt
    libc/src/wchar/wcspbrk.cpp
    libc/test/src/wchar/wcspbrk_test.cpp

Removed: 
    


################################################################################
diff  --git a/libc/src/wchar/CMakeLists.txt b/libc/src/wchar/CMakeLists.txt
index c27ac4e568b6d..0f5b7470ada8e 100644
--- a/libc/src/wchar/CMakeLists.txt
+++ b/libc/src/wchar/CMakeLists.txt
@@ -76,6 +76,7 @@ add_entrypoint_object(
   DEPENDS
     libc.hdr.wchar_macros
     libc.src.__support.wctype_utils
+    libc.src.__support.macros.null_check
 )
 
 add_entrypoint_object(

diff  --git a/libc/src/wchar/wcspbrk.cpp b/libc/src/wchar/wcspbrk.cpp
index bf305a5dbe125..a00ba9979a489 100644
--- a/libc/src/wchar/wcspbrk.cpp
+++ b/libc/src/wchar/wcspbrk.cpp
@@ -10,6 +10,7 @@
 
 #include "hdr/types/wchar_t.h"
 #include "src/__support/common.h"
+#include "src/__support/macros/null_check.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
@@ -23,6 +24,9 @@ bool contains_char(const wchar_t *str, wchar_t target) {
 
 LLVM_LIBC_FUNCTION(const wchar_t *, wcspbrk,
                    (const wchar_t *src, const wchar_t *breakset)) {
+  LIBC_CRASH_ON_NULLPTR(src);
+  LIBC_CRASH_ON_NULLPTR(breakset);
+
   // currently O(n * m), can be further optimized to O(n + m) with a hash set
   for (int src_idx = 0; src[src_idx] != 0; src_idx++)
     if (contains_char(breakset, src[src_idx]))

diff  --git a/libc/test/src/wchar/wcspbrk_test.cpp b/libc/test/src/wchar/wcspbrk_test.cpp
index f7754c0b324e9..bca9bffcf85f0 100644
--- a/libc/test/src/wchar/wcspbrk_test.cpp
+++ b/libc/test/src/wchar/wcspbrk_test.cpp
@@ -60,3 +60,13 @@ TEST(LlvmLibcWCSPBrkTest, FindsFirstInBreakset) {
   EXPECT_EQ(LIBC_NAMESPACE::wcspbrk(src, L"34"), src + 2);
   EXPECT_EQ(LIBC_NAMESPACE::wcspbrk(src, L"43"), src + 2);
 }
+
+#if defined(LIBC_ADD_NULL_CHECKS) && !defined(LIBC_HAS_SANITIZER)
+TEST(LlvmLibcWCSPBrkTest, NullptrCrash) {
+  // Passing in a nullptr should crash the program.
+  EXPECT_DEATH([] { LIBC_NAMESPACE::wcspbrk(L"aaaaaaaaaaaaaa", nullptr); },
+               WITH_SIGNAL(-1));
+  EXPECT_DEATH([] { LIBC_NAMESPACE::wcspbrk(nullptr, L"aaaaaaaaaaaaaa"); },
+               WITH_SIGNAL(-1));
+}
+#endif // LIBC_HAS_ADDRESS_SANITIZER


        


More information about the libc-commits mailing list