Re: BUG #14927: Unchecked SearchSysCache1() return value - Mailing list pgsql-bugs

From Amit Langote
Subject Re: BUG #14927: Unchecked SearchSysCache1() return value
Date
Msg-id ca5461f9-1d9b-dd89-2c58-cd6202cfdb5d@lab.ntt.co.jp
Whole thread Raw
In response to BUG #14927: Unchecked SearchSysCache1() return value  (bianpan2016@163.com)
Responses Re: BUG #14927: Unchecked SearchSysCache1() return value  (PanBian <bianpan2016@163.com>)
List pgsql-bugs
On 2017/11/27 18:01, bianpan2016@163.com wrote:
> The following bug has been logged on the website:
> 
> Bug reference:      14927
> Logged by:          Pan Bian
> Email address:      bianpan2016@163.com
> PostgreSQL version: 10.1
> Operating system:   Linux
> Description:        
> 
> File: postgresql-10.1/src/backend/catalog/heap.c
> Function: heap_drop_with_catalog
> Line: 1771
> 
> Function SearchSysCache1() may return a NULL pointer, but in
> heap_drop_with_catalog(), its return value is not validated before it is
> dereferenced. To avoid NULL dereference, it is better to check the return
> value of SearchSysCache1() against NULL.
> 
> For your convenience, I paste related codes as follows:
> 
> 1771     tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(relid));
> 1772     if (((Form_pg_class) GETSTRUCT(tuple))->relispartition)
> 1773     {
> 1774         parentOid = get_partition_parent(relid);
> 1775         LockRelationOid(parentOid, AccessExclusiveLock);
> 1776     }
> 1777 
> 1778     ReleaseSysCache(tuple);

Thanks for the report.  Attached a patch that adds a check that tuple is
valid before trying to dereference it.

Thanks,
Amit

Attachment

pgsql-bugs by date:

Previous
From: bianpan2016@163.com
Date:
Subject: BUG #14931: Unchecked attnum value in ATExecAlterColumnType()
Next
From: Amit Langote
Date:
Subject: Re: BUG #14928: Unchecked SearchSysCacheCopy1() return value