Fix string memory leak (Coverity defect #1823).
authorPatrick Lam <plam@MIT.EDU>
Mon, 10 Apr 2006 19:33:03 +0000 (19:33 +0000)
committerPatrick Lam <plam@MIT.EDU>
Mon, 10 Apr 2006 19:33:03 +0000 (19:33 +0000)
Fix memory leak with hash collision (Coverity defect #1824).
reviewed by: plam

ChangeLog
src/fccache.c
src/fccfg.c

index c1185f6..b35be7a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 2006-04-10  Frederic Crozat  <fcrozat@mandriva.com>
        reviewed by: plam
        
+       * src/fccfg.c: (FcConfigEvaluate):
+       Fix string memory leak (Coverity defect #1823).
+       
+       * src/fccache.c: (FcDirCacheUnlink):
+       Fix memory leak with hash collision (Coverity defect #1824).
+
+2006-04-10  Frederic Crozat  <fcrozat@mandriva.com>
+       reviewed by: plam
+       
        * src/fccache.c: (FcGlobalCacheSave):
        Don't leak header in non-error case (Coverity defect #1825).
 
index 042439e..23c37f1 100644 (file)
@@ -854,6 +854,7 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config)
        fd = open(cache_hashed, O_RDONLY | O_BINARY);
        if (fd == -1)
        {
+           FcStrFree ((FcChar8 *)cache_hashed);
            FcStrFree ((FcChar8 *)cache_file);
            return FcTrue;
        }
index 7f8a8ff..fc70fef 100644 (file)
@@ -893,6 +893,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
     FcValue    v, vl, vr;
     FcResult   r;
     FcMatrix   *m;
+    FcChar8     *str;
     
     switch (e->op) {
     case FcOpInteger:
@@ -1023,7 +1024,9 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
                switch (e->op) {
                case FcOpPlus:
                    v.type = FcTypeString;
-                   v.u.s = FcStrStaticName (FcStrPlus (vl.u.s, vr.u.s));
+                   str = FcStrPlus (vl.u.s, vr.u.s);
+                   v.u.s = FcStrStaticName (str);
+                   FcStrFree (str);
                         
                    if (!v.u.s)
                        v.type = FcTypeVoid;