diff --git a/cde/lib/DtHelp/Environ_c.c b/cde/lib/DtHelp/Environ_c.c index 516278db7..3e7990238 100644 --- a/cde/lib/DtHelp/Environ_c.c +++ b/cde/lib/DtHelp/Environ_c.c @@ -74,6 +74,7 @@ char * _DtCliSrvGetDtUserSession(void) char screen[BUFSIZ]; char * display = NULL; char * localDisplayVar = getenv("DISPLAY"); + int needsfree = 0; if (localDisplayVar == NULL) { @@ -98,6 +99,7 @@ char * _DtCliSrvGetDtUserSession(void) } else { display = malloc(strlen(localDisplayVar) + 1); + needsfree = 1; strcpy(display, localDisplayVar); } @@ -120,6 +122,10 @@ char * _DtCliSrvGetDtUserSession(void) if (envVar) sprintf (envVar, "%s-%s-%s", logname, display, screen); + if(needsfree) { + free(display); + } + return envVar; } }