[Python-Dev] can this overflow (list insertion)?
Vladimir Marangozov
Vladimir.Marangozov@inrialpes.fr
Sun, 13 Aug 2000 00:24:39 +0200 (CEST)
Trent Mick wrote:
>
> [listobject.c/ins1()]
> ...
> self->ob_item = items;
> self->ob_size++; <-------------- can this overflow?
> return 0;
> }
>
>
> In the case of sizeof(int) < sizeof(void*), can this overflow. I have a small
> patch to text self->ob_size against INT_MAX and I was going to submit it but
> I am not so sure that overflow is not checked by some other mechanism for
> list insert.
+0.
It could overflow but if it does, this is a bad sign about using a list
for such huge amount of data.
And this is the second time in a week that I see an attempt to introduce
a bogus counter due to post-increments embedded in an if statement!
> Is it or was this relying on sizeof(ob_size) == sizeof(void*),
> hence a list being able to hold as many items as there is addressable memory?
>
> scared-to-patch-ly yours,
> Trent
And you're right <wink>
>
>
> proposed patch:
>
> *** python/dist/src/Objects/listobject.c Fri Aug 11 16:25:08 2000
> --- Python/dist/src/Objects/listobject.c Fri Aug 11 16:25:36 2000
> ***************
> *** 149,155 ****
> Py_INCREF(v);
> items[where] = v;
> self->ob_item = items;
> ! self->ob_size++;
> return 0;
> }
>
> --- 149,159 ----
> Py_INCREF(v);
> items[where] = v;
> self->ob_item = items;
> ! if (self->ob_size++ == INT_MAX) {
> ! PyErr_SetString(PyExc_OverflowError,
> ! "cannot add more objects to list");
> ! return -1;
> ! }
> return 0;
> }
>
>
>
>
> --
> Trent Mick
> TrentM@ActiveState.com
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://www.python.org/mailman/listinfo/python-dev
>
--
Vladimir MARANGOZOV | Vladimir.Marangozov@inrialpes.fr
http://sirac.inrialpes.fr/~marangoz | tel:(+33-4)76615277 fax:76615252