Make a deep copy of the returned value from setlocale #7458
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.
When I tested this library on Linux Manjaro 6.6.85 with enabled ASAN I faced with the issue
heep-use-after-free
.As I understood it's necessary to make a deep copy of the returned value from
setlocale
, because during the next call of this function, the returned memory can be freed.Also https://en.cppreference.com/w/cpp/locale/setlocale recommends making a deep copy.
When I looked at the
setlocale
implementation in glibc 2.41 (it's a version from my system) I see that there is a chance of such behaviour (a returned memory can be freed):https://github.com/bminor/glibc/blob/release/2.41/master/locale/setlocale.c#L395
I made such a fix and now everything is OK.
My compiler is clang 19.1.7.