Package: gtk2-engines-cleanice
Version: 2.4.0-1.1
Severity: critical
Justification: breaks unrelated software
Version 2.4.0 does not check for possible NULL pointers supplied to strncmp()
in draw_flat_box() in cleanice-draw.c, line 1013. This breaks unrelated
software (noticed with Geeqie, bug #457098 could be also related).
Please either apply the attached patch or update the package to 2.4.1
released upstream. However, in my opinion, the upstream's fix for this
bug is not fully correct (it fixes the segfault but changes the operation
of the code in a way incompatible with the docs on GtkTreeView).
Meanwhile I am trying to contact the upstream by e-mail. As one can
see can see from his changelog there were no significant changes in
2.4.1 except this fix.
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (900, 'testing'), (90, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.24-1-686 (SMP w/1 CPU core)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages gtk2-engines-cleanice depends on:
ii libatk1.0-0 1.22.0-1 The ATK accessibility toolkit
ii libc6 2.7-10 GNU C Library: Shared libraries
ii libcairo2 1.6.4-6 The Cairo 2D vector graphics libra
ii libglib2.0-0 2.16.3-2 The GLib library of C routines
ii libgtk2.0-0 [gtk2.0-binver-2. 2.12.10-2 The GTK+ graphical user interface
ii libpango1.0-0 1.20.3-2 Layout and rendering of internatio
gtk2-engines-cleanice recommends no packages.
-- no debconf information
diff -urN gtk2-engines-cleanice-2.4.0-orig/src/cleanice-draw.c gtk2-engines-cleanice-2.4.0/src/cleanice-draw.c
--- gtk2-engines-cleanice-2.4.0-orig/src/cleanice-draw.c 2005-01-30 06:55:08.000000000 +0300
+++ gtk2-engines-cleanice-2.4.0/src/cleanice-draw.c 2008-07-10 12:29:50.000000000 +0400
@@ -25,6 +25,7 @@
#include "cleanice.h"
#define DETAIL(xx) ((detail) && (!strcmp(xx, detail)))
+#define DETAILN(xx) ((detail) && (!strncmp(xx, detail, strlen(xx))))
static void cleanice_style_init (CleanIceStyle * style);
static void cleanice_style_class_init (CleanIceStyleClass * klass);
@@ -1010,8 +1011,7 @@
if (area) {
gdk_gc_set_clip_rectangle (style->bg_gc[GTK_STATE_NORMAL], NULL);
}
- } else if (!strncmp ("cell_even", detail, strlen ("cell_even")) ||
- !strncmp ("cell_odd", detail, strlen ("cell_odd"))) {
+ } else if (DETAILN ("cell_even") || DETAILN ("cell_odd")) {
if (state_type == GTK_STATE_SELECTED) {
if (GTK_WIDGET_HAS_FOCUS (widget)) {
gdk_draw_rectangle (window, style->bg_gc[state_type], TRUE,