diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-16 15:24:35 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-16 15:24:35 (GMT) |
commit | d203d159b9f52796cd28cad53f0c6d777caadf11 (patch) | |
tree | 53010b2267e0e65ad4a09ccbde87692f1180edbe /generic/tclObj.c | |
parent | 530446f68e748c71bcd26835ca42576d1dbdc17e (diff) | |
download | tcl-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/tclObj.c')
-rw-r--r-- | generic/tclObj.c | 4 |
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; } |