diff options
| author | sebres <sebres@users.sourceforge.net> | 2025-07-21 18:32:50 (GMT) |
|---|---|---|
| committer | sebres <sebres@users.sourceforge.net> | 2025-07-21 18:32:50 (GMT) |
| commit | 899a818f2341e6eb0a03d92f3cbfcbfea136064c (patch) | |
| tree | 08d23b4cc7cd8c08626fd084766dba3e47110fcd /generic/tclIOUtil.c | |
| parent | 9ff2ef9fe1182691137f06690891b27b24890dd3 (diff) | |
| parent | e7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10 (diff) | |
| download | tcl-899a818f2341e6eb0a03d92f3cbfcbfea136064c.zip tcl-899a818f2341e6eb0a03d92f3cbfcbfea136064c.tar.gz tcl-899a818f2341e6eb0a03d92f3cbfcbfea136064c.tar.bz2 | |
merge 8.5 to 8.6: amend to [61c01e0edb08a9ed], more cases for increment ref-count with use-after-free prevention for interim normalized path object; provide fixes minimally invasive (if API used with fresh created path object, so decrement would not destroy it if normalized path equal original given path)
Diffstat (limited to 'generic/tclIOUtil.c')
| -rw-r--r-- | generic/tclIOUtil.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index 23d25b4..ea0eb4b 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -2981,6 +2981,7 @@ Tcl_FSChdir( Tcl_SetErrno(ENOENT); return -1; } + if (normDirName != pathPtr) { Tcl_IncrRefCount(normDirName); } if (fsPtr == &tclNativeFilesystem) { /* @@ -3022,6 +3023,7 @@ Tcl_FSChdir( if (oldFsPtr != NULL && fsPtr != oldFsPtr) { Tcl_FSMountsChanged(NULL); } + if (normDirName != pathPtr) { Tcl_DecrRefCount(normDirName); } } return retVal; |
