Re: BUG #8552: NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83

From: Haribabu kommi <haribabu(dot)kommi(at)huawei(dot)com>
To: "jmlich(at)redhat(dot)com" <jmlich(at)redhat(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #8552: NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83
Date: 2013-10-24 11:39:40
Message-ID: 8977CB36860C5843884E0A18D8747B0372BCA1EA@szxeml558-mbs.china.huawei.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 24 October 2013 15:11 jmlich wrote:
>NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83
>
>Dear postgresql mainainers,
>
>I was testing the postgresql using coverity scan tool. It reports following
>problem:
>
>
>1. postgresql-9.2.5/contrib/pageinspect/rawpage.c:81:negative_return_fn – Function "forkname_to_number(text_to_cstring(forkname))" returns a negative number.
>15.
>postgresql-9.2.5/src/backend/catalog/catalog.c:79:2:return_negative_constant
>– Explicitly returning negative value "InvalidForkNumber".
>16. postgresql-9.2.5/contrib/pageinspect/rawpage.c:81:var_assign –
>Assigning: signed variable "forknum" = "forkname_to_number(char *)".
>17. postgresql-9.2.5/contrib/pageinspect/rawpage.c:83:negative_returns – Passing variable "forknum" to a parameter that cannot be negative.
>30. postgresql-9.2.5/contrib/pageinspect/rawpage.c:146:2:index – Function "ReadBufferExtended(Relation, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy)" uses "forknum" as an array index.
36. postgresql-9.2.5/src/backend/storage/buffer/bufmgr.c:248:2:index – Function "ReadBuffer_common(SMgrRelation, char, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy, bool *)" uses
>"forkNum" as an array index.
>51. postgresql-9.2.5/src/backend/storage/buffer/bufmgr.c:377:4:index – Function "relpathbackend(RelFileNode, BackendId, ForkNumber)" uses "forkNum"
>as an array index.
>54. postgresql-9.2.5/src/backend/catalog/catalog.c:131:4:index – Indexing "forkNames" with "forknum".
>
>In my opinion it worth to fix. I am not sure how to do it as I am not very familiar with postgresql source code. I suggest to add assert into relpathbackend in calalog.c or to add condition into
>rawpage.c. In case it is not a bug, I would appreciate short explanation.

The function forkname_to_number() doesn't return InvalidForkNumber. Before the return statement there is an ereport is present.
The return statement is used for keeping the compiler quiet. The coverity tool is reporting the errors as it is not detecting the ereport.

Regards,
Hari Babu.

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2013-10-24 12:42:38 Re: random() generates collisions too early
Previous Message jmlich 2013-10-24 09:41:23 BUG #8552: NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83