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:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user