Package: wmaker
Version: 0.92.0-5
Followup-For: Bug #279862
I noticed the same segfaults after compiling and installing wmaker today. The
reason
is dereferencing a NULL pointer that can happen in several places of the code
when
there is a font setting line missing in the config file or when the config
files are
missing.
The patch is attached.
-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.4.30
Locale: LANG=ru_RU.KOI8-R, LC_CTYPE=ru_RU.KOI8-R (charmap=KOI8-R)
Versions of packages wmaker depends on:
ii cpp 4:3.3.5-3 The GNU C preprocessor (cpp)
ii debianutils 2.8.4 Miscellaneous utilities specific t
ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an
ii libfontconfig1 2.3.1-2 generic font configuration library
ii libfreetype6 2.1.7-2.4 FreeType 2 font engine, shared lib
ii libwraster3 0.92.0-5 Shared libraries of Window Maker r
ii libx11-6 6.8.2.dfsg.1-7bpo1 X Window System protocol client li
ii libxext6 6.8.2.dfsg.1-7bpo1 X Window System miscellaneous exte
ii libxft2 2.1.7-1 FreeType-based font drawing librar
ii libxinerama1 6.8.2.dfsg.1-7bpo1 X Window System multi-head display
ii libxrender1 1:0.9.0-1bpo1 X Rendering Extension client libra
ii xlibs 6.8.2.dfsg.1-7bpo1 X Window System client libraries m
ii zlib1g 1:1.2.2-4.sarge.2 compression library - runtime
-- no debconf information
--- wmaker-0.92.0.orig/WPrefs.app/FontSimple.c 2004-10-26 15:03:42.000000000 +0300
+++ wmaker-0.92.0/WPrefs.app/FontSimple.c 2005-10-08 21:47:09.000000000 +0300
@@ -358,18 +358,19 @@
WMMenuItem *item= WMGetPopUpButtonMenuItem(panel->optionP,
WMGetPopUpButtonSelectedItem(panel->optionP));
char *fn= WMGetMenuItemRepresentedObject(item);
- WMFont *font= WMCreateFont(WMWidgetScreen(panel->box), fn);
-
- if (font)
- {
- WMSetTextFieldFont(panel->sampleT, font);
- WMReleaseFont(font);
+ if (fn)
+ {
+ WMFont *font= WMCreateFont(WMWidgetScreen(panel->box), fn);
+ if (font)
+ {
+ WMSetTextFieldFont(panel->sampleT, font);
+ WMReleaseFont(font);
+ }
}
}
-
static void
selectedFamily(WMWidget *w, void *data)
{
@@ -449,10 +450,12 @@
char *ofont, *nfont;
ofont= (char*)WMGetMenuItemRepresentedObject(item);
-
- nfont= getSelectedFont(panel, ofont);
- free(ofont);
- WMSetMenuItemRepresentedObject(item, nfont);
+ if (ofont)
+ {
+ nfont= getSelectedFont(panel, ofont);
+ free(ofont);
+ WMSetMenuItemRepresentedObject(item, nfont);
+ }
}
updateSampleFont(panel);
}
@@ -468,11 +471,12 @@
char *ofont, *nfont;
ofont= (char*)WMGetMenuItemRepresentedObject(item);
-
- nfont= getSelectedFont(panel, ofont);
- free(ofont);
- WMSetMenuItemRepresentedObject(item, nfont);
-
+ if (ofont)
+ {
+ nfont= getSelectedFont(panel, ofont);
+ free(ofont);
+ WMSetMenuItemRepresentedObject(item, nfont);
+ }
updateSampleFont(panel);
}