summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-02-16 15:24:35 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-02-16 15:24:35 (GMT)
commitd203d159b9f52796cd28cad53f0c6d777caadf11 (patch)
tree53010b2267e0e65ad4a09ccbde87692f1180edbe /generic
parent530446f68e748c71bcd26835ca42576d1dbdc17e (diff)
downloadtcl-d203d159b9f52796cd28cad53f0c6d777caadf11.zip
tcl-d203d159b9f52796cd28cad53f0c6d777caadf11.tar.gz
tcl-d203d159b9f52796cd28cad53f0c6d777caadf11.tar.bz2
Fix [c6fea6ba6]: possible signed integer overflow in Tcl_GetLongFromObj(), Tcl_GetWideIntFromObj()
Diffstat (limited to 'generic')
-rw-r--r--generic/tclObj.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 1fd674f..029d3c0 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -2816,7 +2816,7 @@ Tcl_GetLongFromObj(
value = (value << CHAR_BIT) | *bytes++;
}
if (big.sign) {
- *longPtr = - (long) value;
+ *longPtr = (long) (0-value);
} else {
*longPtr = (long) value;
}
@@ -3116,7 +3116,7 @@ Tcl_GetWideIntFromObj(
value = (value << CHAR_BIT) | *bytes++;
}
if (big.sign) {
- *wideIntPtr = - (Tcl_WideInt) value;
+ *wideIntPtr = (Tcl_WideInt) (0-value);
} else {
*wideIntPtr = (Tcl_WideInt) value;
}