chiark
/
gitweb
/
~ian
/
chiark-tcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use of int and overflow review
[chiark-tcl.git]
/
hbytes
/
chop.c
diff --git
a/hbytes/chop.c
b/hbytes/chop.c
index 3e48569ff63bfa343b8984d09a385ba6c7a91338..e649b5aa12a4dce45eb4ade79de62d2347d21c06 100644
(file)
--- a/
hbytes/chop.c
+++ b/
hbytes/chop.c
@@
-22,13
+22,15
@@
#include "chiark_tcl_hbytes.h"
static int strs1(Tcl_Interp *ip, int strc, Tcl_Obj *const *strv, int *l_r) {
#include "chiark_tcl_hbytes.h"
static int strs1(Tcl_Interp *ip, int strc, Tcl_Obj *const *strv, int *l_r) {
- int rc, l, i;
+ int rc, l, i
, pl
;
l= 0;
for (i=1; i<strc; i++) {
rc= Tcl_ConvertToType(ip,strv[i],&cht_hbytes_type);
if (rc) return rc;
l= 0;
for (i=1; i<strc; i++) {
rc= Tcl_ConvertToType(ip,strv[i],&cht_hbytes_type);
if (rc) return rc;
- l += cht_hb_len(OBJ_HBYTES(strv[i]));
+ pl= cht_hb_len(OBJ_HBYTES(strv[i]));
+ assert(l < INT_MAX/2 && pl < INT_MAX/2);
+ l += pl;
}
*l_r= l;
return TCL_OK;
}
*l_r= l;
return TCL_OK;