diff options
| author | dgp <dgp@users.sourceforge.net> | 2017-06-08 21:05:22 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2017-06-08 21:05:22 (GMT) |
| commit | cc72d116bdbf58771070b191dc48c28de07462b1 (patch) | |
| tree | c9ccf23582095d1b977962aa076ac4de4283aeb4 /generic/tclStringObj.c | |
| parent | 94b635d569531d2ddc114a2966ee35296e6fe777 (diff) | |
| download | tcl-cc72d116bdbf58771070b191dc48c28de07462b1.zip tcl-cc72d116bdbf58771070b191dc48c28de07462b1.tar.gz tcl-cc72d116bdbf58771070b191dc48c28de07462b1.tar.bz2 | |
Modernize overflow checks.
Diffstat (limited to 'generic/tclStringObj.c')
| -rw-r--r-- | generic/tclStringObj.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 31a6b26..43f8016 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -2916,10 +2916,10 @@ TclStringCatObjv( last = objc - oc; if (length == 0) { first = last; - } - if ((length += numBytes) < 0) { + } else if (numBytes > INT_MAX - length) { goto overflow; } + length += numBytes; } } } while (--oc); @@ -2937,10 +2937,10 @@ TclStringCatObjv( last = objc - oc; if (length == 0) { first = last; - } - if ((length += numChars) < 0) { + } else if (numChars > INT_MAX - length) { goto overflow; } + length += numChars; } } } while (--oc); @@ -2973,10 +2973,10 @@ TclStringCatObjv( } if (length == 0) { first = last; - } - if ((length += numBytes) < 0) { + } else if (numBytes > INT_MAX - length) { goto overflow; } + length += numBytes; } } while (--oc); } |
