Re: BUG #14928: Unchecked SearchSysCacheCopy1() return value
PanBian <bianpan2016@163.com>
From: PanBian <bianpan2016@163.com>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: pgsql-bugs@postgresql.org
Date: 2017-11-27T11:36:52Z
Lists: pgsql-bugs
On Mon, Nov 27, 2017 at 07:21:32PM +0900, Amit Langote wrote: > On 2017/11/27 18:13, bianpan2016@163.com wrote: > > The following bug has been logged on the website: > > > > Bug reference: 14928 > > Logged by: Pan Bian > > Email address: bianpan2016@163.com > > PostgreSQL version: 10.1 > > Operating system: Linux > > Description: > > > > Thanks for the report. Attached a patch that adds a check that tuple is > valid before trying to dereference it. > > Thanks, > Amit > Got it. Thanks a lot, Pan Bian > diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c > index d19846d005..8cd6c65111 100644 > --- a/src/backend/commands/tablecmds.c > +++ b/src/backend/commands/tablecmds.c > @@ -14111,6 +14111,9 @@ ATExecDetachPartition(Relation rel, RangeVar *name) > classRel = heap_open(RelationRelationId, RowExclusiveLock); > tuple = SearchSysCacheCopy1(RELOID, > ObjectIdGetDatum(RelationGetRelid(partRel))); > + if (!HeapTupleIsValid(tuple)) > + elog(ERROR, "cache lookup failed for relation %u", > + RelationGetRelid(partRel)); > Assert(((Form_pg_class) GETSTRUCT(tuple))->relispartition); > > (void) SysCacheGetAttr(RELOID, tuple, Anum_pg_class_relpartbound,
Commits
-
Fix assorted syscache lookup sloppiness in partition-related code.
- cb03fa33aeae 11.0 landed
- 64487044966d 10.2 landed