Review Request 127488: Fix usage of std::isprint() function
Aleix Pol Gonzalez
aleixpol at kde.org
Thu Mar 24 23:30:11 UTC 2016
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/127488/#review93956
-----------------------------------------------------------
Could we get a test for this?
- Aleix Pol Gonzalez
On March 24, 2016, 10:06 p.m., Dominik Haumann wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/127488/
> -----------------------------------------------------------
>
> (Updated March 24, 2016, 10:06 p.m.)
>
>
> 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/f75ab75e/attachment-0001.html>
More information about the Kde-frameworks-devel
mailing list