Merge bitcoin #14585, #14599: Use functions guaranteed to be locale independent#4403
Merged
UdjinM6 merged 3 commits intodashpay:developfrom Sep 9, 2021
Merged
Merge bitcoin #14585, #14599: Use functions guaranteed to be locale independent#4403UdjinM6 merged 3 commits intodashpay:developfrom
UdjinM6 merged 3 commits intodashpay:developfrom
Conversation
…isspace 15db77f Don't rely on locale dependent functions in base_blob<BITS>::SetHex(...) (uint256), DecodeBase58(...), ParseMoney(...) and ParseHex(...) (practicalswift) Pull request description: Don't rely on locale dependent function `std::isspace` in `base_blob<BITS>::SetHex(...)` (uint256), `DecodeBase58(...)`, `ParseMoney(...)` and `ParseHex(...)`. Rationale: ``` $ uname -s Darwin $ cat poc.cpp #include <iostream> #include <locale> int main(void) { setlocale(LC_ALL, ""); std::cout << std::isspace(133) << ' ' << std::isspace(154) << ' ' << std::isspace(160); std::cout << '\n'; } $ clang++ -o poc poc.cpp $ ./poc 1 0 1 $ LC_ALL=en_US ./poc 1 0 1 $ LC_ALL=C ./poc 0 0 0 $ LC_ALL=ru_RU.KOI8-R ./poc # an "interesting" locale 0 1 0 ``` Tree-SHA512: 4eafb267342b8a777da6cca07c353afd1f90f3fc1d91e01f526f1b384a2b97c1da25b7bd7dfc300655182a4eaec6a4bea855a45723ab53c750a734b60e1e3c9f
…t (IsDigit, ToLower) in {Format,Parse}Money(...), uint256::SetHex(...), etc. Remove the use of locale dependent boost::is_space(...)
8931a95 Include util/strencodings.h which is required for IsSpace(...) (practicalswift)
7c9f790 Update KNOWN_VIOLATIONS: Remove fixed violations (practicalswift)
587924f Use IsSpace(...) instead of boost::is_space (practicalswift)
c5fd143 Use ToLower(...) instead of std::tolower (practicalswift)
e70cc89 Use IsDigit(...) instead of std::isdigit (practicalswift)
Pull request description:
* Use `ToLower(...)` instead of `std::tolower`. `std::tolower` is locale dependent.
* Use `IsDigit(...)` instead of `std::isdigit`. Some implementations (e.g. Microsoft in 1252 codepage) may classify single-byte characters other than `[0-9]` as digits.
* Update `KNOWN_VIOLATIONS`: Remove fixed violations.
* ~~Replace use of locale dependent Boost trim (`boost::trim`) with locale independent `TrimString`.~~
* Use` IsSpace(...)` instead of `boost::is_space`
Tree-SHA512: defed016136b530b723fa185afdbd00410925a748856ba3afa4cee60f61a67617e30f304f2b9991a67b5fe075d9624f051e14342aee176f45fbc024d59e1aa82
Use locale-agnostic IsSpace and ToLower instead of std::isspace and std::tolower. Signed-off-by: Dzutte <[email protected]>
PastaPastaPasta
approved these changes
Sep 9, 2021
Member
PastaPastaPasta
left a comment
There was a problem hiding this comment.
utACK for merging via merge commit
LGTM 👍
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.