"PostgreSQL Bugs List" <[EMAIL PROTECTED]> writes:
> There is test case (notice there is ltree column):

Seems to be a buffer overrun in lquery_out().  I've applied the attached
patch for 7.4.1.

                        regards, tom lane

*** contrib/ltree/ltree_io.c.orig       Sun Aug  3 20:43:10 2003
--- contrib/ltree/ltree_io.c    Wed Dec 17 15:09:40 2003
***************
*** 498,518 ****
                           *ptr;
        int                     i,
                                j,
!                               totallen = 0;
        lquery_level *curqlevel;
        lquery_variant *curtlevel;
  
        curqlevel = LQUERY_FIRST(in);
        for (i = 0; i < in->numlevel; i++)
        {
                if (curqlevel->numvar)
!                       totallen = (curqlevel->numvar * 4) + 1 + curqlevel->totallen;
                else
!                       totallen = 2 * 11 + 4;
!               totallen++;
                curqlevel = LQL_NEXT(curqlevel);
        }
- 
  
        ptr = buf = (char *) palloc(totallen);
        curqlevel = LQUERY_FIRST(in);
--- 498,517 ----
                           *ptr;
        int                     i,
                                j,
!                               totallen = 1;
        lquery_level *curqlevel;
        lquery_variant *curtlevel;
  
        curqlevel = LQUERY_FIRST(in);
        for (i = 0; i < in->numlevel; i++)
        {
+               totallen++;
                if (curqlevel->numvar)
!                       totallen += 1 + (curqlevel->numvar * 4) + curqlevel->totallen;
                else
!                       totallen += 2 * 11 + 4;
                curqlevel = LQL_NEXT(curqlevel);
        }
  
        ptr = buf = (char *) palloc(totallen);
        curqlevel = LQUERY_FIRST(in);

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to