Correctly free config file names

We call xf86penConfigDirFiles twice, so we overwrite the configDirPath
variable, losing the pointer. If we move the pointer management to the
upper layer (the function callers), they will be able to call these
functions as many times as they want, but they'll have to free those
returned values.

v2: don't leak inside XWin

4,097 bytes in 1 blocks are definitely lost in loss record 625 of 632
   at 0x4C2779D: malloc (in vgpreload_memcheck-amd64-linux.so)
   by 0x4D7899: DoSubstitution (scan.c:615)
   by 0x4D87B0: OpenConfigDir (scan.c:845)
   by 0x4D8A2D: xf86openConfigDirFiles (scan.c:955)
   by 0x49031F: xf86HandleConfigFile (xf86Config.c:2327)
   by 0x49A9BF: InitOutput (xf86Init.c:365)
   by 0x425A7A: main (main.c:204)

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
This commit is contained in:
Paulo Zanoni
2011-10-30 18:04:59 -02:00
parent 0ae087e131
commit 3d635fe84d
4 changed files with 20 additions and 20 deletions

View File

@@ -117,7 +117,7 @@ Bool
winReadConfigfile ()
{
Bool retval = TRUE;
const char *filename, *dirname;
char *filename, *dirname;
MessageType filefrom = X_DEFAULT;
MessageType dirfrom = X_DEFAULT;
char *xf86ConfigFile = NULL;
@@ -169,6 +169,8 @@ winReadConfigfile ()
{
return FALSE;
}
free(filename);
free(dirname);
if ((g_xf86configptr = xf86readConfigFile ()) == NULL)
{
winMsg (X_ERROR, "Problem parsing the config file\n");