Tcl Source Code

Artifact [350f0e4ebf]
Login

Artifact 350f0e4ebfdde4357c58f130d7b8260ef0b5fc99d03fb646193691b2e220eb21:

Attachment "obj-31.6-overflow.diff" to ticket [4789e18fcb] added by chrstphrchvz 2022-02-17 00:12:41. (unpublished)
diff --git generic/tclUtil.c generic/tclUtil.c
index 858163e8..aed21c18 100644
--- generic/tclUtil.c
+++ generic/tclUtil.c
@@ -3730,7 +3730,8 @@ UpdateStringOfEndOffset(
     memcpy(buffer, "end", 4);
     if (objPtr->internalRep.longValue != 0) {
 	buffer[len++] = '-';
-	len += TclFormatInt(buffer+len, -(objPtr->internalRep.longValue));
+	len += TclFormatInt(buffer+len,
+		(long)(-(unsigned long)(objPtr->internalRep.longValue)));
     }
     objPtr->bytes = (char *)ckalloc(len+1);
     memcpy(objPtr->bytes, buffer, len+1);
@@ -3843,7 +3844,7 @@ SetEndOffsetFromAny(
 	if (bytes[3] == '-') {
 
 	    /* TODO: Review overflow concerns here! */
-	    offset = -offset;
+	    offset = (int)(-(unsigned int)offset);
 	}
     } else {
 	/*