From 8eb7fb67ca55e59485b0b983e7faf6a987f9e7ee Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Tue, 5 Apr 2011 21:58:11 +0200 Subject: pass pOrigPath (strdup'd) to dirname(3) instead of pPath to avoid double free from the dirname(3) manual: Both dirname() and basename() may modify the contents of path, so copies should be passed to these functions. Furthermore, dirname() and basename() may return pointers to statically allocated memory which may be overwritten by subsequent calls. --- desktop/unx/source/start.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'desktop') diff --git a/desktop/unx/source/start.c b/desktop/unx/source/start.c index fcb2daf461ab..e81cd6129d0a 100755 --- a/desktop/unx/source/start.c +++ b/desktop/unx/source/start.c @@ -216,12 +216,12 @@ get_app_path( const char *pAppExec ) char pRealPath[PATH_MAX]; rtl_uString *pResult; - char *pPath = strdup( pAppExec ); - pPath = dirname( pPath ); + char *pOrigPath = strdup( pAppExec ); + char *pPath = dirname( pOrigPath ); realpath( pPath, pRealPath ); pResult = charp_to_ustr( pRealPath ); - free( pPath ); + free( pOrigPath ); return pResult; } -- cgit