Error check always bypassed in tablefunc.c

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Error check always bypassed in tablefunc.c
Date: 2015-01-16 15:21:02
Message-ID: CAB7nPqQ+pC0FA=akasXe-zNaAV+eYdRiBj68Cq+u1i6e6HRDkA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 Content-Type Size
20150115_tablefunc_deadcode_fix.patch text/x-diff 697 bytes

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2015-01-16 15:25:55 Re: orangutan seizes up during isolation-check
Previous Message Alvaro Herrera 2015-01-16 15:09:25 Re: Safe memory allocation functions