Fix AddressSanitizer use-after-scope complaint.
authorPeter Geoghegan
Thu, 30 Apr 2020 19:31:56 +0000 (12:31 -0700)
committerPeter Geoghegan
Thu, 30 Apr 2020 19:31:56 +0000 (12:31 -0700)
XLogRegisterBufData() does not copy data pointed to by caller's pointer
argument.

Oversight in commit 0d861bbb702.

Author: Peter Eisentraut
Reported-By: Peter Eisentraut
Discussion: https://postgr.es/m/21800dbe-a13e-22f7-d423-b81db9d249f5@2ndquadrant.com

src/backend/access/nbtree/nbtinsert.c

index a70b64d96457d0ad0adb9ae2fbfb14fa6c9b1cd9..8246ab4f18d57ba5ff9b2db73ceb42fc66ffe632 100644 (file)
@@ -1289,6 +1289,7 @@ _bt_insertonpg(Relation rel,
            xl_btree_metadata xlmeta;
            uint8       xlinfo;
            XLogRecPtr  recptr;
+           uint16      upostingoff;
 
            xlrec.offnum = newitemoff;
 
@@ -1354,7 +1355,7 @@ _bt_insertonpg(Relation rel,
                 * must reconstruct final itup (as well as nposting) using
                 * _bt_swap_posting().
                 */
-               uint16      upostingoff = postingoff;
+               upostingoff = postingoff;
 
                XLogRegisterBufData(0, (char *) &upostingoff, sizeof(uint16));
                XLogRegisterBufData(0, (char *) origitup,