summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2012-01-26 16:42:52 (GMT)
committerdgp <dgp@users.sourceforge.net>2012-01-26 16:42:52 (GMT)
commitc476140458013d8216208a4ea6f6c8537525fa98 (patch)
tree3eb0855b1af2fbcd59d9584e772c338eab3977da
parentfb0d06610f8729df71be474692792022459a9ab5 (diff)
downloadtcl-c476140458013d8216208a4ea6f6c8537525fa98.zip
tcl-c476140458013d8216208a4ea6f6c8537525fa98.tar.gz
tcl-c476140458013d8216208a4ea6f6c8537525fa98.tar.bz2
3479689 Stop memory corruption when shimmering 0-refCount value to "path" type.
-rw-r--r--ChangeLog6
-rw-r--r--generic/tclPathObj.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 47c37b0..263cbfa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-26 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclPathObj.c: [Bug 3475569]: Add checks for unshared values
+ before calls demanding them. [Bug 3479689]: Stop memory corruption
+ when shimmering 0-refCount value to "path" type.
+
2012-01-22 Jan Nijtmans <nijtmans@users.sf.net>
* tools/uniClass.tcl: [Frq 3473670]: Various Unicode-related
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index c32202d..6a26b9f 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -2551,7 +2551,10 @@ SetFsPathFromAny(
}
Tcl_DStringFree(&temp);
} else {
+ /* Bug 3479689: protect 0-refcount pathPth from getting freed */
+ pathPtr->refCount++;
transPtr = Tcl_FSJoinToPath(pathPtr, 0, NULL);
+ pathPtr->refCount--;
}
#if defined(__CYGWIN__) && defined(__WIN32__)