mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-09-15 22:58:56 -04:00
The bump allocator hands out chunks from one big malloc, so AddressSanitizer cannot see a write that underflows one chunk into its neighbour -- e.g. a miscomputed F_SUM() that reaches before a file_struct's extras (the FLAG_HLINKED-without-H bug). Under ASan, poison a small redzone just below each returned chunk (allocations grow downward from the top of an extent) so such an underflow becomes a hard use-after-poison report; unpoison a whole extent whenever its space is reused (reset/reclaim) so legitimate later allocations never trip over an old redzone. Compiled out entirely without -fsanitize=address. Validated: a deliberate write 12 bytes below F_SUM is caught as a use-after-poison; the existing suite (hardlinks/inc-recurse, daemon, xattrs, merge) is clean under ASan, so the redzone introduces no false positives. Also add a require_asan() test helper (mirrors require_tcp) for tests that are only meaningful under an ASan build. (cherry picked from commit 402962b7cdea8afb27c0e6e198fef62172c751e3)