Review Request 127488: Fix usage of std::isprint() function

Dominik Haumann dhaumann at kde.org
Tue Mar 29 15:52:27 UTC 2016


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/127488/
-----------------------------------------------------------

(Updated March 29, 2016, 3:52 p.m.)


Status
------

This change has been marked as submitted.


Review request for KDE Frameworks.


Changes
-------

Submitted with commit d9a99dce9d63cab0429ac94acb160304e2bfa36f by Dominik Haumann to branch master.


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
-----

  autotests/kencodingprobertest.cpp 937bc13 
  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/20160329/f5e04fc1/attachment.html>


More information about the Kde-frameworks-devel mailing list