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 |
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 |