[compiler-rt] [asan] Detect dereferencing zero-alloc as heap buffer overflow (PR #155943)
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 30 14:54:43 PDT 2025
thurstond wrote:
> This change broke `test\asan\TestCases\Windows\heaprealloc_alloc_zero.cpp` on 32 bit Windows - see https://github.com/mstorsjo/llvm-mingw/actions/runs/17337326265/job/49243607453:
>
> ```
> # error: command failed with exit status: 1
> # executed command: FileCheck 'D:\a\llvm-mingw\llvm-mingw\llvm-project\compiler-rt\test\asan\TestCases\Windows\heaprealloc_alloc_zero.cpp'
> # .---command stderr------------
> # | D:\a\llvm-mingw\llvm-mingw\llvm-project\compiler-rt\test\asan\TestCases\Windows\heaprealloc_alloc_zero.cpp:56:15: error: CHECK-NOT: excluded string found in input
> # | // CHECK-NOT: heap-buffer-overflow
> # | ^
> # | <stdin>:3:34: note: found here
> # | ==7036==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x01d00770 at pc 0x005e140f bp 0x00cffc94 sp 0x00cffc90
> # | ^~~~~~~~~~~~~~~~~~~~
> # | D:\a\llvm-mingw\llvm-mingw\llvm-project\compiler-rt\test\asan\TestCases\Windows\heaprealloc_alloc_zero.cpp:57:15: error: CHECK-NOT: excluded string found in input
> # | // CHECK-NOT: AddressSanitizer
> # | ^
> # | <stdin>:3:16: note: found here
> # | ==7036==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x01d00770 at pc 0x005e140f bp 0x00cffc94 sp 0x00cffc90
> # | ^~~~~~~~~~~~~~~~
> # |
> # | Input file: <stdin>
> # | Check file: D:\a\llvm-mingw\llvm-mingw\llvm-project\compiler-rt\test\asan\TestCases\Windows\heaprealloc_alloc_zero.cpp
> # |
> # | -dump-input=help explains the following input dump.
> # |
> # | Input was:
> # | <<<<<<
> # | 1: allocated!
> # | 2: =================================================================
> # | 3: ==7036==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x01d00770 at pc 0x005e140f bp 0x00cffc94 sp 0x00cffc90
> # | not:56 !~~~~~~~~~~~~~~~~~~~ error: no match expected
> # | not:57 !~~~~~~~~~~~~~~~ error: no match expected
> # | 4: WRITE of size 1 at 0x01d00770 thread T0
> # | 5: #0 0x005e140e in main D:\a\llvm-mingw\llvm-mingw\llvm-project\compiler-rt\test\asan\TestCases\Windows/heaprealloc_alloc_zero.cpp:12:20
> # | 6: #1 0x005e10d3 in __tmainCRTStartup /home/runner/work/llvm-mingw/llvm-mingw/mingw-w64/mingw-w64-crt/build-i686/../crt/crtexe.c:236:11
> # | 7: #2 0x772067f8 (C:\Windows\System32\KERNEL32.DLL+0x6b8167f8)
> # | 8: #3 0x77df7f4c (C:\Windows\SYSTEM32\ntdll.dll+0x4b2e7f4c)
> # | .
> # | .
> # | .
> # | >>>>>>
> # `-----------------------------
> # error: command failed with exit status: 1
> ```
>
> This test has `// UNSUPPORTED: asan-64-bits` at https://github.com/llvm/llvm-project/blob/main/compiler-rt/test/asan/TestCases/Windows/heaprealloc_alloc_zero.cpp#L3, so this test case isn't executed in most common 64 bit environments.
Sorry for the breakage. I've drafted https://github.com/llvm/llvm-project/pull/156211 which I think will fix it.
https://github.com/llvm/llvm-project/pull/155943
More information about the llvm-commits
mailing list