diff options
| author | sebres <sebres@users.sourceforge.net> | 2025-07-21 18:21:43 (GMT) |
|---|---|---|
| committer | sebres <sebres@users.sourceforge.net> | 2025-07-21 18:21:43 (GMT) |
| commit | e7e759c639a63a5b4ef2bcce0a9aaab4cb1ffe10 (patch) | |
| tree | fd8fdc0c2f22981d9fed6e2e98447134f1341112 /generic/tclIOUtil.c | |
| parent | 6f2c08cfba0904f3bbd9f983e04381b4e86fccee (diff) | |
| download | tcl-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.c | 2 |
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; |
