BUG #8552: NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83
От | jmlich@redhat.com |
---|---|
Тема | BUG #8552: NEGATIVE_RETURNS in contrib/pageinspect/rawpage.c:83 |
Дата | |
Msg-id | E1VZHPv-0007u5-VU@wrigleys.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #8552: NEGATIVE_RETURNS in
contrib/pageinspect/rawpage.c:83
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 8552 Logged by: Jozef Mlich Email address: jmlich@redhat.com PostgreSQL version: 9.2.5 Operating system: any Description: 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. (1) $ diff postgresql-9.2.5/src/backend/catalog/catalog.c.orig postgresql-9.2.5/src/backend/catalog/catalog.c 122a123,124 > Assert(forknum == InvalidForkNumber); > (2) $ diff postgresql-9.2.5/contrib/pageinspect/rawpage.c.orig postgresql-9.2.5/contrib/pageinspect/rawpage.c 82a83,87 > if (forknum == InvalidForkNumber) > { > foo() // FIXME > } > -- regards, Jozef Mlich
В списке pgsql-bugs по дате отправления: