Don't crash when fc-cat invoked with no arguments.

Fix invalid read access caused by premature free and GCC4 warnings in
    libxml2 codepath.
reviewed by: plam
reviewed by: plam
This commit is contained in:
Patrick Lam 2005-11-18 20:32:30 +00:00
parent 82912b062b
commit 8f2a807810
3 changed files with 25 additions and 5 deletions

View File

@ -1,4 +1,19 @@
2005-10-25 Jinghua Luo <sunmoon1997@gmail.com> 2005-11-18 Frederic Crozat <fcrozat@mandriva.com>
reviewed by: plam
* fc-cat/fc-cat.c (main):
Don't crash when fc-cat invoked with no arguments.
2005-11-18 Frederic Crozat <fcrozat@mandriva.com>
reviewed by: plam
* src/fcxml.c (FcConfigSaveAttr, FcConfigParseAndLoad):
Fix invalid read access caused by premature free and
GCC4 warnings in libxml2 codepath.
2005-11-17 Jinghua Luo <sunmoon1997@gmail.com>
reviewed by: plam reviewed by: plam
* src/fccfg.c (FcConfigValues): * src/fccfg.c (FcConfigValues):

View File

@ -325,6 +325,9 @@ main (int argc, char **argv)
i = 1; i = 1;
#endif #endif
if (i >= argc)
usage (argv[0]);
if (FcCacheFileRead (fs, dirs, dirname (strdup(argv[i])), argv[i])) if (FcCacheFileRead (fs, dirs, dirname (strdup(argv[i])), argv[i]))
FcCachePrintSet (fs, dirs, argv[i]); FcCachePrintSet (fs, dirs, argv[i]);

View File

@ -933,7 +933,7 @@ FcConfigSaveAttr (const XML_Char **attr)
return 0; return 0;
slen = 0; slen = 0;
for (i = 0; attr[i]; i++) for (i = 0; attr[i]; i++)
slen += strlen (attr[i]) + 1; slen += strlen ((char *) attr[i]) + 1;
n = i; n = i;
new = malloc ((i + 1) * sizeof (FcChar8 *) + slen); new = malloc ((i + 1) * sizeof (FcChar8 *) + slen);
if (!new) if (!new)
@ -2385,9 +2385,10 @@ FcConfigParseAndLoad (FcConfig *config,
printf ("\tLoading config file %s\n", filename); printf ("\tLoading config file %s\n", filename);
f = fopen ((char *) filename, "r"); f = fopen ((char *) filename, "r");
if (!f) {
FcStrFree (filename); FcStrFree (filename);
if (!f)
goto bail0; goto bail0;
}
#if ENABLE_LIBXML2 #if ENABLE_LIBXML2
memset(&sax, 0, sizeof(sax)); memset(&sax, 0, sizeof(sax));
@ -2398,10 +2399,11 @@ FcConfigParseAndLoad (FcConfig *config,
sax.endElement = FcEndElement; sax.endElement = FcEndElement;
sax.characters = FcCharacterData; sax.characters = FcCharacterData;
p = xmlCreatePushParserCtxt (&sax, &parse, NULL, 0, filename); p = xmlCreatePushParserCtxt (&sax, &parse, NULL, 0, (const char *) filename);
#else #else
p = XML_ParserCreate ("UTF-8"); p = XML_ParserCreate ("UTF-8");
#endif #endif
FcStrFree (filename);
if (!p) if (!p)
goto bail1; goto bail1;