summaryrefslogtreecommitdiffstats
path: root/generic/tclIOUtil.c
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2025-07-21 18:21:43 (GMT)
committersebres <sebres@users.sourceforge.net>2025-07-21 18:21:43 (GMT)
commite7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10 (patch)
treefd8fdc0c2f22981d9fed6e2e98447134f1341112 /generic/tclIOUtil.c
parent6f2c08cfba0904f3bbd9f983e04381b4e86fccee (diff)
downloadtcl-e7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10.zip
tcl-e7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10.tar.gz
tcl-e7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10.tar.bz2
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 a124406..7e9c0f0 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -2996,6 +2996,7 @@ Tcl_FSChdir(
Tcl_SetErrno(ENOENT);
return -1;
}
+ if (normDirName != pathPtr) { Tcl_IncrRefCount(normDirName); }
if (fsPtr == &tclNativeFilesystem) {
/*
@@ -3029,6 +3030,7 @@ Tcl_FSChdir(
} else {
FsUpdateCwd(normDirName, NULL);
}
+ if (normDirName != pathPtr) { Tcl_DecrRefCount(normDirName); }
}
return retVal;