X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=maskmap%2Faddrmap.c;h=0f72eb4899ad28edd0a6995c626571cdf4e22eda;hb=ca8b96bf81245f21fe3906c71dc2994bfc5e516f;hp=33eeda42390c1dab9db0adef5eba40efcd962d0a;hpb=82f88c53ddb84e42c770c23feb9bb0ee18341188;p=chiark-tcl.git diff --git a/maskmap/addrmap.c b/maskmap/addrmap.c index 33eeda4..0f72eb4 100644 --- a/maskmap/addrmap.c +++ b/maskmap/addrmap.c @@ -1,6 +1,24 @@ /* + * maskmap - Tcl extension for address mask map data structures + * Copyright 2006-2012 Ian Jackson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301, USA. */ + #include "chiark_tcl_hbytes.h" /*---------- operations on AddrMap_Entry ----------*/ @@ -75,6 +93,7 @@ static void am_reallocentries(AddrMap_Value *am, int len) { assert(len >= am->space); if (!len) return; + assert(len < INT_MAX/sizeof(*newentries)); newentries= TREALLOC(am->entries, sizeof(*newentries)*len); assert(newentries); @@ -218,6 +237,7 @@ static int addrmap_t_sfa(Tcl_Interp *ip, Tcl_Obj *o) { } am->byl= bitlen/8; + assert(inlen < INT_MAX/2); am_reallocentries(am, (inlen-1)*2+1); ame= ame_sfa_alloc(am);