https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117023
Bruno Haible <bruno at clisp dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bruno at clisp dot org --- Comment #2 from Bruno Haible <bruno at clisp dot org> --- Created attachment 59394 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59394&action=edit test case n3322.c According to https://sourceware.org/pipermail/libc-alpha/2024-October/160375.html, N3322 has been accepted for inclusion in ISO C. The instrumentation of the following functions therefore should NOT produce runtime errors or crashes any more: bsearch qsort memccpy strndup wcsncpy wcsncmp wcsncat How to reproduce: $ gcc -fsanitize=undefined,address -O0 -fno-omit-frame-pointer -ggdb n3322.c $ ./a.out n3322.c:25:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:26:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:29:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:30:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:35:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:46:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:47:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:52:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:53:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:54:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:54:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:60:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:61:3: runtime error: null pointer passed as argument 1, which is declared to never be null AddressSanitizer:DEADLYSIGNAL ================================================================= ==2745541==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7febd4efef34 bp 0x7ffca7ab7440 sp 0x7ffca7ab6bd8 T0) ==2745541==The signal is caused by a READ memory access. ==2745541==Hint: address points to the zero page. #0 0x7febd4efef34 in __sanitizer::internal_wcslen(wchar_t const*) ../../../../gcc-14.2.0/libsanitizer/sanitizer_common/sanitizer_libc.cpp:288 #1 0x7febd4e710bc in wcsncat ../../../../gcc-14.2.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:7093 #2 0x401a97 in main /home/bruno/n3322.c:61 #3 0x7febd45b3d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 #4 0x7febd45b3e3f in __libc_start_main_impl ../csu/libc-start.c:392 #5 0x4011a4 in _start (/home/bruno/a.out+0x4011a4) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV ../../../../gcc-14.2.0/libsanitizer/sanitizer_common/sanitizer_libc.cpp:288 in __sanitizer::internal_wcslen(wchar_t const*) ==2745541==ABORTING Dissection of runtime errors: bsearch: n3322.c:25:3: runtime error: null pointer passed as argument 2, which is declared to never be null qsort: n3322.c:26:3: runtime error: null pointer passed as argument 1, which is declared to never be null memccpy: n3322.c:29:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:30:3: runtime error: null pointer passed as argument 2, which is declared to never be null strndup: n3322.c:35:3: runtime error: null pointer passed as argument 1, which is declared to never be null wcsncpy: n3322.c:46:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:47:3: runtime error: null pointer passed as argument 2, which is declared to never be null wcsncmp: n3322.c:52:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:53:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:54:3: runtime error: null pointer passed as argument 1, which is declared to never be null n3322.c:54:3: runtime error: null pointer passed as argument 2, which is declared to never be null wcsncat: n3322.c:60:3: runtime error: null pointer passed as argument 2, which is declared to never be null n3322.c:61:3: runtime error: null pointer passed as argument 1, which is declared to never be null and the call to internal_wcslen.