Fix double free (spotted by Coverity, CID #1965).
Check if pattern is not null before using it (Coverity defect #1883). Fix memory leak with hash collision (Coverity defect #1829). Fix memory leak when bail cases (Coverity defect #1828). Don't leak directory name (Coverity defect #1827). reviewed by: plam
This commit is contained in:
parent
86abd75965
commit
ae2aafe602
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
||||||
|
2006-04-10 Frederic Crozat <fcrozat@mandriva.com>
|
||||||
|
reviewed by: plam
|
||||||
|
|
||||||
|
* src/fccache.c: (FcDirCacheWrite):
|
||||||
|
Fix double free (spotted by Coverity, CID #1965).
|
||||||
|
|
||||||
|
* fc-match/fc-match.c: (main):
|
||||||
|
Check if pattern is not null before using it (Coverity defect #1883).
|
||||||
|
|
||||||
|
* src/fccache.c: (FcDirCacheWrite):
|
||||||
|
Fix memory leak with hash collision (Coverity defect #1829).
|
||||||
|
|
||||||
|
* src/fccfg.c: (FcConfigBuildFonts):
|
||||||
|
Fix memory leak when bail cases (Coverity defect #1828).
|
||||||
|
|
||||||
|
* src/fccache.c: (FcGlobalCacheLoad):
|
||||||
|
Don't leak directory name (Coverity defect #1827).
|
||||||
|
|
||||||
2006-04-07 Dominic Lachowicz <cinamod@hotmail.com>
|
2006-04-07 Dominic Lachowicz <cinamod@hotmail.com>
|
||||||
reviewed by: plam
|
reviewed by: plam
|
||||||
* fc-cache/Makefile.am:
|
* fc-cache/Makefile.am:
|
||||||
|
|
|
@ -134,6 +134,9 @@ main (int argc, char **argv)
|
||||||
else
|
else
|
||||||
pat = FcPatternCreate ();
|
pat = FcPatternCreate ();
|
||||||
|
|
||||||
|
if (!pat)
|
||||||
|
return 1;
|
||||||
|
|
||||||
FcConfigSubstitute (0, pat, FcMatchPattern);
|
FcConfigSubstitute (0, pat, FcMatchPattern);
|
||||||
FcDefaultSubstitute (pat);
|
FcDefaultSubstitute (pat);
|
||||||
|
|
||||||
|
@ -147,8 +150,7 @@ main (int argc, char **argv)
|
||||||
if (match)
|
if (match)
|
||||||
FcFontSetAdd (fs, match);
|
FcFontSetAdd (fs, match);
|
||||||
}
|
}
|
||||||
if (pat)
|
FcPatternDestroy (pat);
|
||||||
FcPatternDestroy (pat);
|
|
||||||
|
|
||||||
if (fs)
|
if (fs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -236,7 +236,7 @@ FcGlobalCacheLoad (FcGlobalCache *cache,
|
||||||
FcCache md;
|
FcCache md;
|
||||||
off_t off;
|
off_t off;
|
||||||
|
|
||||||
FcStrSetAdd (staleDirs, FcStrCopy ((FcChar8 *)name_buf));
|
FcStrSetAdd (staleDirs, (FcChar8 *)name_buf);
|
||||||
|
|
||||||
/* skip subdirs */
|
/* skip subdirs */
|
||||||
while (FcCacheReadString (cache->fd, subdirName,
|
while (FcCacheReadString (cache->fd, subdirName,
|
||||||
|
@ -1311,12 +1311,16 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
if(!FcCacheReadString (fd, name_buf, sizeof (name_buf)) || !strlen(name_buf))
|
if(!FcCacheReadString (fd, name_buf, sizeof (name_buf)) || !strlen(name_buf))
|
||||||
{
|
{
|
||||||
close (fd);
|
close (fd);
|
||||||
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
close (fd);
|
close (fd);
|
||||||
|
|
||||||
if (strcmp (name_buf, cache_file) != 0)
|
if (strcmp (name_buf, cache_file) != 0)
|
||||||
|
{
|
||||||
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} while (1);
|
} while (1);
|
||||||
|
@ -1445,7 +1449,7 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
free (header);
|
free (header);
|
||||||
close(fd);
|
close(fd);
|
||||||
if (!FcAtomicReplaceOrig(atomic))
|
if (!FcAtomicReplaceOrig(atomic))
|
||||||
goto bail5;
|
goto bail3;
|
||||||
FcStrFree ((FcChar8 *)cache_hashed);
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
FcStrFree ((FcChar8 *)cache_file);
|
FcStrFree ((FcChar8 *)cache_file);
|
||||||
FcAtomicUnlock (atomic);
|
FcAtomicUnlock (atomic);
|
||||||
|
|
|
@ -335,6 +335,7 @@ FcConfigBuildFonts (FcConfig *config)
|
||||||
|
|
||||||
return FcTrue;
|
return FcTrue;
|
||||||
bail2:
|
bail2:
|
||||||
|
FcGlobalCacheDestroy (cache);
|
||||||
FcStrSetDestroy (oldDirs);
|
FcStrSetDestroy (oldDirs);
|
||||||
bail1:
|
bail1:
|
||||||
FcFontSetDestroy (fonts);
|
FcFontSetDestroy (fonts);
|
||||||
|
|
Loading…
Reference in New Issue