[dfsan] Make sprintf interceptor compatible with glibc 2.37+ and musl #78363
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
snprintf interceptors call
format_buffer
withsize==~0ul
, whichmay eventually lead to
snprintf(s, n, "Hello world!")
wheres+n
wraps around. Since glibc 2.37 (https://sourceware.org/PR30441), the
snprintf call does not write the last char. musl snprintf returns -1
with EOVERFLOW when
n > INT_MAX
.Change
size
to INT_MAX to work with glibc 2.37+ and musl.snprintf interceptors are not changed. It's user responsibility to not
cause a compatibility issue with libc implementations.
Fix #60678