On 2005-04-23, Tom Lane <[EMAIL PROTECTED]> wrote: > Ron Mayer <[EMAIL PROTECTED]> 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 ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]