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