diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-08-25 11:35:01 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-08-25 11:35:01 (GMT) |
commit | 5d964e0e6cf53fdbfb627ec0846131dae369f644 (patch) | |
tree | fd67c4df954da5d9030c959d0668dbc513b0c22b | |
parent | ea11a4da28d3e9a1c80627b23e83b34a7d73baf1 (diff) | |
parent | 4b8109368625d2b5d9c74f7f2375925b57860efa (diff) | |
download | tcl-5d964e0e6cf53fdbfb627ec0846131dae369f644.zip tcl-5d964e0e6cf53fdbfb627ec0846131dae369f644.tar.gz tcl-5d964e0e6cf53fdbfb627ec0846131dae369f644.tar.bz2 |
Fix [0df7a1ec2674a76a]: unix/tclUnixFile.c: return value of call to TclpGetCwd in TclpFindExecutable is not checked, variable cwd is used uninitialized.
-rw-r--r-- | unix/tclUnixFile.c | 7 | ||||
-rwxr-xr-x | win/tclWinFile.c | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c index 2cb0027..7ffbf8d 100644 --- a/unix/tclUnixFile.c +++ b/unix/tclUnixFile.c @@ -155,6 +155,11 @@ TclpFindExecutable( goto done; } + if (TclpGetCwd(NULL, &cwd) == NULL) { + TclSetObjNameOfExecutable(Tcl_NewObj(), NULL); + goto done; + } + /* * The name is relative to the current working directory. First strip off * a leading "./", if any, then add the full path name of the current @@ -168,8 +173,6 @@ TclpFindExecutable( Tcl_DStringInit(&nameString); Tcl_DStringAppend(&nameString, name, -1); - TclpGetCwd(NULL, &cwd); - Tcl_DStringFree(&buffer); Tcl_UtfToExternalDString(NULL, Tcl_DStringValue(&cwd), Tcl_DStringLength(&cwd), &buffer); diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 6b9d373..02927ad 100755 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -3001,7 +3001,7 @@ TclNativeCreateNativeRep( } done: - + TclDecrRefCount(validPathPtr); return nativePathPtr; } |