Possible dereference null return (src/backend/replication/logical/reorderbuffer.c) - Mailing list pgsql-hackers

From Ranier Vilela
Subject Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)
Date
Msg-id CAEudQAoxLGtyt3XmOzCi091dpW+o__9DmuE9rmRmDsdyXEpVVA@mail.gmail.com
Whole thread Raw
Responses Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)
List pgsql-hackers
Hi,

Per Coverity.

If xid is a subtransaction, the setup of base snapshot on the top-level transaction,
can be not optional, otherwise a Dereference null return value (NULL_RETURNS) can be raised.

Patch suggestion to fix this.

diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index 5a62ab8bbc..3c6a81f716 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -2993,8 +2993,8 @@ ReorderBufferSetBaseSnapshot(ReorderBuffer *rb, TransactionId xid,
  */
  txn = ReorderBufferTXNByXid(rb, xid, true, &is_new, lsn, true);
  if (rbtxn_is_known_subxact(txn))
- txn = ReorderBufferTXNByXid(rb, txn->toplevel_xid, false,
- NULL, InvalidXLogRecPtr, false);
+ txn = ReorderBufferTXNByXid(rb, txn->toplevel_xid, true,
+ NULL, InvalidXLogRecPtr, true);
  Assert(txn->base_snapshot == NULL);
 
  txn->base_snapshot = snap;

regards,
Ranier Vilela
Attachment

pgsql-hackers by date:

Previous
From: Ranier Vilela
Date:
Subject: Possible dereference after null check (src/backend/executor/ExecUtils.c)
Next
From: Greg Nancarrow
Date:
Subject: Re: Parallel INSERT (INTO ... SELECT ...)