]> git.wh0rd.org - fontconfig.git/commitdiff
Don't crash when fc-cat invoked with no arguments.
authorPatrick Lam <plam@MIT.EDU>
Fri, 18 Nov 2005 20:32:30 +0000 (20:32 +0000)
committerPatrick Lam <plam@MIT.EDU>
Fri, 18 Nov 2005 20:32:30 +0000 (20:32 +0000)
Fix invalid read access caused by premature free and GCC4 warnings in
    libxml2 codepath.
reviewed by: plam
reviewed by: plam

ChangeLog
fc-cat/fc-cat.c
src/fcxml.c

index f93693b92577586c60c9f80547caa208459a919a..27f97b1f774e7f17b143d4e2c950d3390abf3a07 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
 
        * src/fccfg.c (FcConfigValues):
index 4f5b71d5e13a18b69fac7785d989b9040b8a1df8..4436512ae93bddbd357ecff106c9900e91c0f3d6 100644 (file)
@@ -325,6 +325,9 @@ main (int argc, char **argv)
     i = 1;
 #endif
 
+    if (i >= argc)
+        usage (argv[0]);
+
     if (FcCacheFileRead (fs, dirs, dirname (strdup(argv[i])), argv[i]))
        FcCachePrintSet (fs, dirs, argv[i]);
 
index b3777b9bb43247f3329a69551cc21ea3eb8551e0..57fd606bf20660286a232aef92368faa9c3ba367 100644 (file)
@@ -933,7 +933,7 @@ FcConfigSaveAttr (const XML_Char **attr)
        return 0;
     slen = 0;
     for (i = 0; attr[i]; i++)
-       slen += strlen (attr[i]) + 1;
+       slen += strlen ((char *) attr[i]) + 1;
     n = i;
     new = malloc ((i + 1) * sizeof (FcChar8 *) + slen);
     if (!new)
@@ -2385,9 +2385,10 @@ FcConfigParseAndLoad (FcConfig       *config,
        printf ("\tLoading config file %s\n", filename);
 
     f = fopen ((char *) filename, "r");
-    FcStrFree (filename);
-    if (!f)
+    if (!f) { 
+       FcStrFree (filename);
        goto bail0;
+    }
     
 #if ENABLE_LIBXML2
     memset(&sax, 0, sizeof(sax));
@@ -2398,10 +2399,11 @@ FcConfigParseAndLoad (FcConfig      *config,
     sax.endElement = FcEndElement;
     sax.characters = FcCharacterData;
 
-    p = xmlCreatePushParserCtxt (&sax, &parse, NULL, 0, filename);
+    p = xmlCreatePushParserCtxt (&sax, &parse, NULL, 0, (const char *) filename);
 #else
     p = XML_ParserCreate ("UTF-8");
 #endif
+    FcStrFree (filename);
 
     if (!p)
        goto bail1;