-
Notifications
You must be signed in to change notification settings - Fork 434
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid use of std::isspace in StringUtils.h #1874
Comments
Thanks for reporting @SRHMorris, I wonder, did you enable special flags to trigger this assertion? Would be nice to have this checked in our Windows CI, we have Debug jobs but these don't seem to complain at the moment. Probably not tested in our unit tests anyway, I tried it on macOS but it doesn't seem to trigger any assertion when feeding it negatives. |
@remia OCIO is compiled with the default cmake debug target. I get the same assertion with the following code: #include <cctype>
int main()
{
return std::isspace(-2);
// return std::isspace(static_cast<unsigned char>(-2)); // works
} To be clear I don't get this with every ICC profile, just a specific one. Regardless it's still undefined behave if the strings being processed contain negatives (and char is signed). If I ignore the asserts then everything progresses as expected, so it doesn't seem to cause any problems in release builds (but could potentially). But it's a pain to have to deal with in debug. |
Understood @SRHMorris, thanks for the details. Are you able to submit a PR for this by any chance? |
@remia Not currently, so I'd be happy for anyone else to do it |
@SRHMorris , could you upload an ICC profile that triggers this issue? We have a volunteer to implement a fix but need a way to test it. |
Signed-off-by: pylee <[email protected]>
@doug-walker I'm not sure of the legality of distributing this specific one unfortunately. But this issue doesn't really have anything to do with ICC profiles. It should be enough to just test the functions in StringUtils with utf-8 encoded strings? e.g. something like: // careful, in c++20 u8 is const char8_t*
const char *s = reinterpret_cast<const char*>(u8"\u0080");
// without the cast to unsigned char this would trigger the assert or lead to UB
LeftTrim(s); |
OK, thanks @SRHMorris. After PR #1888 is merged, please double check that it solves the issue on your end. |
* Issue #1874 Cast to unsigned char for isspace. Signed-off-by: pylee <[email protected]> * Add unit test. Signed-off-by: pylee <[email protected]> * Add test comment as suggested in code review. Signed-off-by: pylee <[email protected]> --------- Signed-off-by: pylee <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]>
…e. (AcademySoftwareFoundation#1888) * Issue AcademySoftwareFoundation#1874 Cast to unsigned char for isspace. Signed-off-by: pylee <[email protected]> * Add unit test. Signed-off-by: pylee <[email protected]> * Add test comment as suggested in code review. Signed-off-by: pylee <[email protected]> --------- Signed-off-by: pylee <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> Signed-off-by: Doug Walker <[email protected]>
…e. (AcademySoftwareFoundation#1888) * Issue AcademySoftwareFoundation#1874 Cast to unsigned char for isspace. Signed-off-by: pylee <[email protected]> * Add unit test. Signed-off-by: pylee <[email protected]> * Add test comment as suggested in code review. Signed-off-by: pylee <[email protected]> --------- Signed-off-by: pylee <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit ed85207) Signed-off-by: Doug Walker <[email protected]>
* Fix support for X86 32-bit (#1842) Signed-off-by: Mark Reid <[email protected]> (cherry picked from commit 16b3157) Signed-off-by: Doug Walker <[email protected]> * Add some small arm neon optimizations (#1847) * Remove unused includes Signed-off-by: Mark Reid <[email protected]> * Use neon hardware support for f16 conversions Signed-off-by: Mark Reid <[email protected]> * Add some small neon optimizations use blendv,floor and fma intrinsics were possible Signed-off-by: Mark Reid <[email protected]> --------- Signed-off-by: Mark Reid <[email protected]> (cherry picked from commit 14f0afa) Signed-off-by: Doug Walker <[email protected]> * Add links to new release notes documentation (#1848) Signed-off-by: Kevin Wheatley <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 87126fa) Signed-off-by: Doug Walker <[email protected]> * Changing version to 2.4.0 (#1852) Signed-off-by: Cédrik Fuoco <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 381d1fc) Signed-off-by: Doug Walker <[email protected]> * Correctly recover CXX_FLAGS in CheckSupportSSE2.cmake (#1861) Signed-off-by: Chongyun Lee <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit c429400) Signed-off-by: Doug Walker <[email protected]> * Fix regression in cccid handling when no value is supplied (#1855) In v1 of OCIO FileTransforms are able to load .cc files without specifying a cccid. In v2 this broke causing an exception to be raised instead of using the first cc found in the file. Signed-off-by: Kevin Wheatley <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit c7ad353) Signed-off-by: Doug Walker <[email protected]> * Fix missing cache id reset on look update. (#1873) Signed-off-by: Eric Renaud-Houde <[email protected]> (cherry picked from commit dddbee0) Signed-off-by: Doug Walker <[email protected]> * ocioview: Curve Inspector improvements (#1845) * Curve inspector improvements - Move README to root app folder - Change curve inspector grid to always render as a square with 10 segments. - Add transform init callback to set new transform subscriptions to the current viewer if set to passthrough. Signed-off-by: Michael Dolan <[email protected]> * Improve log range calculation Signed-off-by: Michael Dolan <[email protected]> * Improve channel sample comparison Signed-off-by: Michael Dolan <[email protected]> * Update src/apps/ocioview/ocioview/inspect/curve_inspector.py Signed-off-by: Michael Dolan <[email protected]> Co-authored-by: Doug Walker <[email protected]> Signed-off-by: Michael Dolan <[email protected]> --------- Signed-off-by: Michael Dolan <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 8add374) Signed-off-by: Doug Walker <[email protected]> * Fix missing Default View Transform on equal operator (#1886) Add the missing assignment of the the default view transform when a config is copied using the equal operator Signed-off-by: Michael De Caria <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit bc8569b) Signed-off-by: Doug Walker <[email protected]> * Remove circular import caused by typing annotations. (#1882) Signed-off-by: Thomas Mansencal <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 1fad466) Signed-off-by: Doug Walker <[email protected]> * fix(grammatical): Spelling mistakes (#1892) Signed-off-by: AbhineshJha <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 0d00b2c) Signed-off-by: Doug Walker <[email protected]> * Improve ocioview mac support and simplify dependencies (#1853) * PySide 6, remove imath, add imageio support Signed-off-by: Rémi Achard <[email protected]> Remove Imath Signed-off-by: Rémi Achard <[email protected]> Support imageio as fallback for openimageio Signed-off-by: Rémi Achard <[email protected]> Further adjustments following latest updates Signed-off-by: Rémi Achard <[email protected]> Fix pixel probe Signed-off-by: Remi Achard <[email protected]> Add OpenColorIO to requirements Signed-off-by: Remi Achard <[email protected]> * Fix rebase issue Signed-off-by: Remi Achard <[email protected]> --------- Signed-off-by: Remi Achard <[email protected]> Signed-off-by: Thomas Mansencal <[email protected]> Signed-off-by: Michael Dolan <[email protected]> Co-authored-by: Thomas Mansencal <[email protected]> Co-authored-by: Michael Dolan <[email protected]> (cherry picked from commit 45544ce) Signed-off-by: Doug Walker <[email protected]> * Issue #1874 Cast to unsigned char for isspace. (#1888) * Issue #1874 Cast to unsigned char for isspace. Signed-off-by: pylee <[email protected]> * Add unit test. Signed-off-by: pylee <[email protected]> * Add test comment as suggested in code review. Signed-off-by: pylee <[email protected]> --------- Signed-off-by: pylee <[email protected]> Signed-off-by: Doug Walker <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit ed85207) Signed-off-by: Doug Walker <[email protected]> * Tentative fix for the doxygen installation in the CI (Windows) (#1890) Signed-off-by: Cédrik Fuoco <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit b94a184) Signed-off-by: Doug Walker <[email protected]> * Simplify the Findyaml-cpp module (#1891) This fixes compatibility with yaml-cpp 0.8, which previously failed because of a `get_property` call with the wrong target name. I took the liberty to add a few simplifications along the way. Signed-off-by: Tobias Mayer <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 1d3b695) Signed-off-by: Doug Walker <[email protected]> * Skip processor concatenation if the display color space is also data. (#1896) * Skip processor concatenation if the display view transform is also data. Signed-off-by: Eric Renaud-Houde <[email protected]> * Moved missing display color space exception before processor creation. Signed-off-by: Eric Renaud-Houde <[email protected]> --------- Signed-off-by: Eric Renaud-Houde <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 52b4965) Signed-off-by: Doug Walker <[email protected]> * Restore GPU workflow and minor updates to CI (#1899) * Restore GPU workflow runs Signed-off-by: Rémi Achard <[email protected]> * Enable undefined behaviour sanitizer Signed-off-by: Rémi Achard <[email protected]> * Fix SIMD option for platform_latest Signed-off-by: Rémi Achard <[email protected]> * Fix install_docs_env on CI workflow (not used at the moment) Signed-off-by: Rémi Achard <[email protected]> * Fix OpenEXR build flag Signed-off-by: Rémi Achard <[email protected]> --------- Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 382dcb6) Signed-off-by: Doug Walker <[email protected]> * Improve handling of pystring include dir (#1901) Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 9078753) Signed-off-by: Doug Walker <[email protected]> * Improve compatibility with minizip-ng COMPAT mode (#1902) Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit ffd0f70) Signed-off-by: Doug Walker <[email protected]> * Fix NamedTransform context var issue (#1905) Signed-off-by: Doug Walker <[email protected]> (cherry picked from commit 4d64b32) Signed-off-by: Doug Walker <[email protected]> * Fix env serialization for v1 configs (#1904) Signed-off-by: Doug Walker <[email protected]> (cherry picked from commit 4f4f30e) Signed-off-by: Doug Walker <[email protected]> * Fix yaml-cpp build issues (#1907) Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit 41441bb) Signed-off-by: Doug Walker <[email protected]> * Adsk Contrib - Improve heuristics for finding known color spaces (#1913) * Improve heuristics Signed-off-by: Doug Walker <[email protected]> * Add some comments Signed-off-by: Doug Walker <[email protected]> --------- Signed-off-by: Doug Walker <[email protected]> (cherry picked from commit d8852b5) Signed-off-by: Doug Walker <[email protected]> * Add Python 3.12 wheels (#1898) Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit f2cfec3) Signed-off-by: Doug Walker <[email protected]> * Increment library version to 2.3.1 Signed-off-by: Doug Walker <[email protected]> * Fix wrong RPATH being injected into Python bindings DSO (#1849) Signed-off-by: Kevin Wheatley <[email protected]> Co-authored-by: Doug Walker <[email protected]> (cherry picked from commit ba2b41e) Signed-off-by: Doug Walker <[email protected]> --------- Signed-off-by: Mark Reid <[email protected]> Signed-off-by: Doug Walker <[email protected]> Signed-off-by: Kevin Wheatley <[email protected]> Signed-off-by: Cédrik Fuoco <[email protected]> Signed-off-by: Chongyun Lee <[email protected]> Signed-off-by: Eric Renaud-Houde <[email protected]> Signed-off-by: Michael Dolan <[email protected]> Signed-off-by: Michael De Caria <[email protected]> Signed-off-by: Doug Walker <[email protected]> Signed-off-by: Thomas Mansencal <[email protected]> Signed-off-by: AbhineshJha <[email protected]> Signed-off-by: Remi Achard <[email protected]> Signed-off-by: pylee <[email protected]> Signed-off-by: Tobias Mayer <[email protected]> Signed-off-by: Rémi Achard <[email protected]> Co-authored-by: Mark Reid <[email protected]> Co-authored-by: Kevin Wheatley <[email protected]> Co-authored-by: Cédrik Fuoco <[email protected]> Co-authored-by: Uchiha Kakashi <[email protected]> Co-authored-by: Éric Renaud-Houde <[email protected]> Co-authored-by: Michael Dolan <[email protected]> Co-authored-by: Michael De Caria <[email protected]> Co-authored-by: Thomas Mansencal <[email protected]> Co-authored-by: Abhinesh <[email protected]> Co-authored-by: Rémi Achard <[email protected]> Co-authored-by: PenneLee <[email protected]> Co-authored-by: tobim <[email protected]>
Forgot to check when the PR was merged, but I can confirm that it's fixed in v2.3.1. |
StringUtils.h contains potentially undefined behaviour when checking for whitespace.
OpenColorIO/src/utils/StringUtils.h
Line 109 in c7ad353
and
OpenColorIO/src/utils/StringUtils.h
Line 126 in c7ad353
Both should be converted to something equivalent to
std::isspace(static_cast<unsigned char>(ch))
.From cppreference:
I'm hitting asserts when loading a specific ICC profile for a virtual display in these functions when compiling on windows with MSVC:
The text was updated successfully, but these errors were encountered: