summaryrefslogtreecommitdiffstats
path: root/generic/tclIOUtil.c
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2025-07-21 18:32:50 (GMT)
committersebres <sebres@users.sourceforge.net>2025-07-21 18:32:50 (GMT)
commit899a818f2341e6eb0a03d92f3cbfcbfea136064c (patch)
tree08d23b4cc7cd8c08626fd084766dba3e47110fcd /generic/tclIOUtil.c
parent9ff2ef9fe1182691137f06690891b27b24890dd3 (diff)
parente7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10 (diff)
downloadtcl-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.c2
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;