From bc51dd4cdf617ba44ed1231d411eb8d63616e371 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sat, 26 May 2012 22:58:14 -0700 Subject: Prevent memory leak in GetFontNames if no fonts are matched Defer creating ParseRec until after we check for numFonts = 0 and return. Fixes error found by Parfait 0.5.0.2 bug checking tool: Memory leak of pointer '' allocated with XtMalloc(40) at line 466 of app/xfontsel/xfontsel.c in function 'GetFontNames'. pointer allocated at line 447 with XtMalloc(40). Signed-off-by: Alan Coopersmith --- xfontsel.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xfontsel.c b/xfontsel.c index c885d71..7740914 100644 --- a/xfontsel.c +++ b/xfontsel.c @@ -444,14 +444,13 @@ struct ParseRec { void GetFontNames(XtPointer closure) { Display *dpy = (Display*)closure; - ParseRec *parseRec = XtNew(ParseRec); + ParseRec *parseRec; int f, field, count; String *fontNames; Boolean *b; int work_priority = 0; - fontNames = parseRec->fontNames = - XListFonts(dpy, AppRes.pattern, 32767, &numFonts); + fontNames = XListFonts(dpy, AppRes.pattern, 32767, &numFonts); fonts = (FontValues*)XtMalloc( numFonts*sizeof(FontValues) ); fontInSet = (Boolean*)XtMalloc( numFonts*sizeof(Boolean) ); @@ -466,6 +465,8 @@ void GetFontNames(XtPointer closure) return; } numBadFonts = 0; + parseRec = XtNew(ParseRec); + parseRec->fontNames = fontNames; parseRec->fonts = fonts; parseRec->num_fonts = count = matchingFontCount = numFonts; parseRec->fieldValues = fieldValues; -- cgit v1.2.3