Package: modlogan
Version: 0.8.13-4
Severity: normal
Tags: patch
Under some circumstances modlogan crashes with this error message:
*** glibc detected *** realloc(): invalid next size: 0x0884f810 ***
A gdb backtrace shows that the problem is in the html_encode function:
#0 0xf7db8947 in raise () from /lib/tls/libc.so.6
#1 0xf7dba0c9 in abort () from /lib/tls/libc.so.6
#2 0xf7dee6ba in __fsetlocking () from /lib/tls/libc.so.6
#3 0xf7df7ec7 in valloc () from /lib/tls/libc.so.6
#4 0xf7df87d5 in realloc () from /lib/tls/libc.so.6
#5 0x0805f3cc in html_encode ()
#6 0xf7d52fd8 in get_menu_item () from
/usr/lib/modlogan/libmla_output_modlogan.so
#7 0xf7d5a6a3 in mplugins_output_modlogan_generate_monthly_output () from
/usr/lib/modlogan/libmla_output_modlogan.so
#8 0x0805bfba in generate_monthly_output ()
#9 0x0805d9c6 in main ()
This function is defined on line 485 of src/misc.c
The function replaces some latin-1 characters with their HTML entity
counterpart. After handling each character it checks if it has more than 4
bytes left in it's destination buffer, realloc()ing than buffer otherwise.
The problem is that each iteration might fill up to 7 bytes into the
destination buffer (in the case of a character with an umlaut). The attached
patch makes sure that at least 8 bytes of buffer is available before each
iteration.
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'oldstable'), (500, 'unstable'), (500,
'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.30-1-amd64 (SMP w/1 CPU core)
Locale: LANG=en_DK.ISO-8859-15, LC_CTYPE=en_DK.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash
Versions of packages modlogan depends on:
ii libadns1 1.4-2 Asynchronous-capable DNS client li
ii libbz2-1.0 1.0.5-3 high-quality block-sorting file co
ii libc6 2.9-25 GNU C Library: Shared libraries
ii libexpat1 2.0.1-4 XML parsing C library - runtime li
ii libgd2-xpm 2.0.36~rc1~dfsg-3 GD Graphics Library version 2
ii libpcre3 7.8-2 Perl 5 Compatible Regular Expressi
ii libpng12-0 1.2.39-1 PNG library - runtime
ii zlib1g 1:1.2.3.3.dfsg-15 compression library - runtime
modlogan recommends no packages.
modlogan suggests no packages.
-- no debconf information
diff -Nur modloganone.com-0.8.13-4/build-tree/modlogan/src/misc.c modloganone.com-0.8.13-4.new/build-tree/modlogan/src/misc.c
--- modloganone.com-0.8.13-4/build-tree/modlogan/src/misc.c 2004-03-18 03:31:50.000000000 +0100
+++ modloganone.com-0.8.13-4.new/build-tree/modlogan/src/misc.c 2009-09-17 12:46:05.726105139 +0200
@@ -490,7 +490,7 @@
if (!s) return NULL;
- q_len = strlen(s) * 2 + 1;
+ q_len = strlen(s) * 2 + 8;
q = malloc(q_len);
p = q;
@@ -535,7 +535,7 @@
*(++p) = '\0';
s++;
- if (strlen(q) > (q_len - 4)) {
+ if (strlen(q) > (q_len - 8)) {
q_len += 128;
q = realloc(q, q_len);