Review Request 127488: Fix usage of std::isprint() function
Dominik Haumann
dhaumann at kde.org
Thu Mar 24 21:06:56 UTC 2016
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/127488/
-----------------------------------------------------------
Review request for KDE Frameworks.
Bugs: 357341
https://bugs.kde.org/show_bug.cgi?id=357341
Repository: kcodecs
Description
-------
With the patch in review request https://git.reviewboard.kde.org/r/127486/ I get another crash when loading the attached file in bug https://bugs.kde.org/show_bug.cgi?id=360797
The issue is the call if isprint(int): Accoring to http://en.cppreference.com/w/cpp/string/byte/isprint
"the behavior is undefined if the value of ch is not representable as unsigned char and is not equal to EOF."
In this case, casting the char to an int results "-31", which is clearly not representable as *unsigned* char. Hence, we indeed hit the "undefined behavior" and get a crash.
This patch therefore
- casts the char to an int first
- and then checks whether the int it non-negative
- only then, isprint() is called.
Diffs
-----
src/probers/UnicodeGroupProber.cpp 1d86f08
Diff: https://git.reviewboard.kde.org/r/127488/diff/
Testing
-------
Kate/Kwrite launch without crash.
Unit tests still pass.
Thanks,
Dominik Haumann
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20160324/3401fffa/attachment.html>
More information about the Kde-frameworks-devel
mailing list