Re: empty array can crash backend using int_array_enum from contrib.
От | Andrew - Supernews |
---|---|
Тема | Re: empty array can crash backend using int_array_enum from contrib. |
Дата | |
Msg-id | slrnd6js46.27a.andrew+nonews@trinity.supernews.net обсуждение исходный текст |
Ответ на | empty array can crash backend using int_array_enum from contrib. (Ron Mayer <rm_pg@cheapcomplexdevices.com>) |
Ответы |
Re: empty array can crash backend using int_array_enum from contrib.
|
Список | pgsql-bugs |
On 2005-04-23, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Ron Mayer <rm_pg@cheapcomplexdevices.com> writes: >> Using the int_array_enum function from contrib/intagg I can crash the >> 8.0.2 backend when I pass it an empty array. > > Man, we've had a few problems with that thing, haven't we? > > I patched it along these lines: [snip] We were discussing this one on irc while it was presumably waiting in the moderation queue, and I suggested to the poster an alternative patch that allowed empty arrays to actually be treated as empty (your version will error out on int_array_enum('{}') rather than producing 0 rows, which seems unhelpful). I would suggest changing your test from != 1 to > 1, and adding the moral equivalent of: --- int_aggregate.c.orig Fri Apr 22 11:37:09 2005 +++ int_aggregate.c Fri Apr 22 11:44:34 2005 @@ -227,7 +227,7 @@ else /* use an existing one */ pc = (CTX *) fcinfo->context; /* Are we done yet? */ - if (pc->num >= pc->p->items) + if (ARR_NDIM(pc->p) != 1 || pc->num >= pc->p->items) { /* We are done */ if (pc->flags & TOASTED) (that test could be moved into the setup phase, of course) -- Andrew, Supernews http://www.supernews.com - individual and corporate NNTP services
В списке pgsql-bugs по дате отправления: