Patch: Fix KEncodingProber crashiness

Jeff Mitchell mitchell at kde.org
Fri Mar 20 18:25:57 GMT 2009


KEncodingProber likes to crash.  I'm guessing no one is really using this
code outside of us (and we just started), but it has some glaring issues:

1) Memory is allocated to a const char * by using strdup, but is removed by
using delete, not free.

2) Memory is always allocated on the heap to the const char * in the
constructor, but this memory is not freed before overwriting it with a new
value, leading to a (miniscule) memory leak.

3) Largest problem: in the function unicodeTest, there are assignments from
string literals, but later in the destructor there is a delete call (which
is what is sparking the crash).  When the string literal is being assigned,
the string itself isn't being copied, but rather the address of the string
literal is being copied.  The literal itself exists in the executable, not
on the heap, so trying to delete it is likely to cause bad things to happen
(and is probably the source of the crashes we are seeing).

This patch does the following:

*Replaces the const char * pointer with a QString on the stack for safety.
*Replaces a strdup call with a QByteArray and a .data() call, which is not
strictly necessary but ensures that any safety checks in QByteArray are
handled.

I'd like to put it in trunk and backport it for 4.2.2.

Thanks,
Jeff

-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix_kencodingprober.patch
Type: text/x-patch
Size: 1305 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20090320/9a64aec6/attachment.bin>


More information about the kde-core-devel mailing list