lang/tcl85: fix integer overflow and avoid segfault
PR: 214205 Submitted by: gahr
This commit is contained in:
parent
4d9192e0f7
commit
315efbe78f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=425331
@ -3,6 +3,7 @@
|
||||
|
||||
PORTNAME= tcl
|
||||
PORTVERSION= 8.5.19
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= TCLTK/tcl8_5 \
|
||||
SF/tcl/Tcl/${PORTVERSION}
|
||||
|
46
lang/tcl85/files/patch-bug214205
Normal file
46
lang/tcl85/files/patch-bug214205
Normal file
@ -0,0 +1,46 @@
|
||||
Index: ../generic/tclListObj.c
|
||||
==================================================================
|
||||
--- ../generic/tclListObj.c
|
||||
+++ ../generic/tclListObj.c
|
||||
@@ -853,12 +853,15 @@
|
||||
*/
|
||||
count = numElems - first;
|
||||
}
|
||||
|
||||
if (objc > LIST_MAX - (numElems - count)) {
|
||||
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
||||
- "max length of a Tcl list (%d elements) exceeded", LIST_MAX));
|
||||
+ if (interp != NULL) {
|
||||
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
||||
+ "max length of a Tcl list (%d elements) exceeded",
|
||||
+ LIST_MAX));
|
||||
+ }
|
||||
return TCL_ERROR;
|
||||
}
|
||||
isShared = (listRepPtr->refCount > 1);
|
||||
numRequired = numElems - count + objc; /* Known <= LIST_MAX */
|
||||
|
||||
|
||||
Index: ../generic/tclListObj.c
|
||||
==================================================================
|
||||
--- ../generic/tclListObj.c
|
||||
+++ ../generic/tclListObj.c
|
||||
@@ -844,15 +844,12 @@
|
||||
if (first >= numElems) {
|
||||
first = numElems; /* So we'll insert after last element. */
|
||||
}
|
||||
if (count < 0) {
|
||||
count = 0;
|
||||
- } else if (numElems < first+count || first+count < 0) {
|
||||
- /*
|
||||
- * The 'first+count < 0' condition here guards agains integer
|
||||
- * overflow in determining 'first+count'
|
||||
- */
|
||||
+ } else if (first > INT_MAX - count /* Handle integer overflow */
|
||||
+ || numElems < first+count) {
|
||||
count = numElems - first;
|
||||
}
|
||||
|
||||
if (objc > LIST_MAX - (numElems - count)) {
|
||||
if (interp != NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user