Skip to content

Commit c7d153c

Browse files
author
jan.nijtmans
committed
Missing TclOOM() calls, which produce a panic when Tcl_InitStringRep() fails
1 parent 4078b3a commit c7d153c

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

generic/tclArithSeries.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,6 +1192,8 @@ UpdateStringOfArithSeries(
11921192
*/
11931193

11941194
p = srep = Tcl_InitStringRep(arithSeriesObjPtr, NULL, bytlen);
1195+
TclOOM(p, bytlen+1);
1196+
11951197
if (!arithSeriesRepPtr->isDouble) {
11961198
for (i = 0; i < arithSeriesRepPtr->len; i++) {
11971199
Tcl_WideInt d = ArithSeriesIndexInt(arithSeriesRepPtr, i);

generic/tclIndexObj.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,8 +388,9 @@ UpdateStringOfIndex(
388388
{
389389
IndexRep *indexRep = (IndexRep *)TclFetchInternalRep(objPtr, &tclIndexType)->twoPtrValue.ptr1;
390390
const char *indexStr = EXPAND_OF(indexRep);
391+
size_t len = strlen(indexStr);
391392

392-
Tcl_InitStringRep(objPtr, indexStr, strlen(indexStr));
393+
TclOOM(Tcl_InitStringRep(objPtr, indexStr, len), len+1);
393394
}
394395

395396
/*

generic/tclTestABSList.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ UpdateStringOfLgen(Tcl_Obj *objPtr)
10471047
LgenSeries *lgenSeriesRepPtr;
10481048
Tcl_Obj *element;
10491049
Tcl_Size i;
1050-
size_t bytlen;
1050+
Tcl_Size bytlen;
10511051
Tcl_Obj *tmpstr = Tcl_NewObj();
10521052

10531053
lgenSeriesRepPtr = (LgenSeries*)objPtr->internalRep.twoPtrValue.ptr1;
@@ -1062,8 +1062,9 @@ UpdateStringOfLgen(Tcl_Obj *objPtr)
10621062
}
10631063
}
10641064

1065-
bytlen = Tcl_GetCharLength(tmpstr);
1066-
Tcl_InitStringRep(objPtr, Tcl_GetString(tmpstr), bytlen);
1065+
char *str = Tcl_GetStringFromObj(tmpstr, &bytlen);
1066+
1067+
TclOOM(Tcl_InitStringRep(objPtr, str, bytlen), bytlen+1);
10671068
Tcl_DecrRefCount(tmpstr);
10681069

10691070
return;

macosx/tclMacOSXFCmd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ UpdateStringOfOSType(
687687
Tcl_Encoding encoding;
688688
char src[5];
689689

690-
TclOOM(dst, size);
690+
TclOOM(dst, size+1);
691691

692692
src[0] = (char) (osType >> 24);
693693
src[1] = (char) (osType >> 16);

0 commit comments

Comments
 (0)