summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2012-05-26 22:58:14 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2012-05-26 22:58:14 -0700
commitbc51dd4cdf617ba44ed1231d411eb8d63616e371 (patch)
treeb5de86614cc27588dee639108ec12154e08f6e31
parent4faa8afa1856a015a63efb12a466b5fd060c1af5 (diff)
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 '<unknown>' 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 <alan.coopersmith@oracle.com>
-rw-r--r--xfontsel.c7
1 files 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;