Error check always bypassed in tablefunc.c - Mailing list pgsql-hackers

From Michael Paquier
Subject Error check always bypassed in tablefunc.c
Date
Msg-id CAB7nPqQ+pC0FA=akasXe-zNaAV+eYdRiBj68Cq+u1i6e6HRDkA@mail.gmail.com
Whole thread Raw
Responses Re: Error check always bypassed in tablefunc.c
List pgsql-hackers
Hi all,

As mentioned in $subject, commit 08c33c4 of 2003 has made the
following block of code dead in tablefunc.c:1320 because level is
incremented to at least 1:
                /* First time through, do a little more setup */
                if (level == 0)
                {
                        /*
                         * Check that return tupdesc is compatible
with the one we got
                         * from the query, but only at level 0 -- no
need to check more
                         * than once
                         */

                        if (!compatConnectbyTupleDescs(tupdesc, spi_tupdesc))
                                ereport(ERROR,
                                                (errcode(ERRCODE_SYNTAX_ERROR),
                                                 errmsg("invalid return type"),
                                                 errdetail("Return and
SQL tuple descriptions are " \

"incompatible.")));
                }

A simple fix is simply to change "level == 0" to "level == 1" to check
for this error, like in the patch attached. This issue has been
spotted by Coverity.
Regards,
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Safe memory allocation functions
Next
From: Noah Misch
Date:
Subject: Re: orangutan seizes up during isolation-check