diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-05-07 20:10:58 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-05-07 20:10:58 (GMT) |
commit | 4dcdd51adbe299efe67dc9aa9c2034df855aef28 (patch) | |
tree | 39a80acb26df459104fc8b72e9e7e47ded950e49 | |
parent | ce9f04ddd190636ebe21db6638701c576dc16a85 (diff) | |
parent | 73dbbaaa23c0ab5d0233211c9f2e34782991a87d (diff) | |
download | tcl-4dcdd51adbe299efe67dc9aa9c2034df855aef28.zip tcl-4dcdd51adbe299efe67dc9aa9c2034df855aef28.tar.gz tcl-4dcdd51adbe299efe67dc9aa9c2034df855aef28.tar.bz2 |
Merge 8.7
-rw-r--r-- | tests/dstring.test | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/dstring.test b/tests/dstring.test index 23863d0..7c9d9f6 100644 --- a/tests/dstring.test +++ b/tests/dstring.test @@ -418,6 +418,24 @@ test dstring-4.2 {truncation} -constraints testdstring -setup { } -cleanup { testdstring free } -result {{} 0} +test dstring-4.3 {truncation} -constraints testdstring -setup { + testdstring free +} -body { + testdstring append "xwvut" -1 + # Pass a negative length to Tcl_DStringSetLength(); + # if not caught, causing '\0' to be written out-of-bounds, + # try corrupting dsPtr->length which begins + # 2*sizeof(Tcl_Size) bytes before dsPtr->staticSpace[], + # so that the result is -256 (on little endian systems) + # rather than e.g. -8 or -16. + # (sizeof(Tcl_Size) does not seem to be available via Tcl, + # so assume sizeof(Tcl_Size) == sizeof(void*) for Tcl 9.) + testdstring trunc [expr {-2*([package vsatisfies $tcl_version 9.0-] + ? $tcl_platform(pointerSize) : 4)}] + list [testdstring get] [testdstring length] +} -cleanup { + testdstring free +} -result {{} 0} test dstring-5.1 {copying to result} -constraints testdstring -setup { testdstring free |