diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-17 11:21:56 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-17 11:21:56 (GMT) |
| commit | 36024b4c2dfa88a5b42c42342e1630cb846b59f0 (patch) | |
| tree | d47999a8c08e11fc113066b725060f5e9b8182b7 /generic/tclTest.c | |
| parent | e49055022daf853edd8df42e1f9a6772f4e37422 (diff) | |
| parent | aa93fba41a6764dce6c1f918388efd0f46136ada (diff) | |
| download | tcl-36024b4c2dfa88a5b42c42342e1630cb846b59f0.zip tcl-36024b4c2dfa88a5b42c42342e1630cb846b59f0.tar.gz tcl-36024b4c2dfa88a5b42c42342e1630cb846b59f0.tar.bz2 | |
Merge 8.7
Diffstat (limited to 'generic/tclTest.c')
| -rw-r--r-- | generic/tclTest.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c index b8f2d28..c0ab6b1 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -6288,7 +6288,8 @@ TestGetIndexFromObjStructObjCmd( const char *const ary[] = { "a", "b", "c", "d", "ee", "ff", NULL, NULL }; - int idx,target, flags = 0; + int target, flags = 0; + signed char idx[8]; if (objc != 3 && objc != 4) { Tcl_WrongNumArgs(interp, 1, objv, "argument targetvalue ?flags?"); @@ -6300,13 +6301,17 @@ TestGetIndexFromObjStructObjCmd( if ((objc > 3) && (Tcl_GetIntFromObj(interp, objv[3], &flags) != TCL_OK)) { return TCL_ERROR; } + memset(idx, 85, sizeof(idx)); if (Tcl_GetIndexFromObjStruct(interp, (Tcl_GetString(objv[1])[0] ? objv[1] : NULL), ary, 2*sizeof(char *), - "dummy", flags, &idx) != TCL_OK) { + "dummy", flags, &idx[1]) != TCL_OK) { return TCL_ERROR; } - if (idx != target) { + if (idx[0] != 85 || idx[2] != 85) { + Tcl_AppendResult(interp, "Tcl_GetIndexFromObjStruct overwrites bytes near index variable", NULL); + return TCL_ERROR; + } else if (idx[1] != target) { char buffer[64]; - sprintf(buffer, "%d", idx); + sprintf(buffer, "%d", idx[1]); Tcl_AppendResult(interp, "index value comparison failed: got ", buffer, NULL); sprintf(buffer, "%d", target); |
