diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2007-02-08 13:52:55 +0000 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2007-02-08 13:52:55 +0000 |
commit | f8ebab901bd27d39e1f45445eae302db628ba8e3 (patch) | |
tree | 270c267d8bf2ba807ca29aba35569a0db86c8ab2 /src | |
parent | 086c189456655846707d9a260a3919f4404ecd9e (diff) | |
download | postgresql-f8ebab901bd27d39e1f45445eae302db628ba8e3.tar.gz postgresql-f8ebab901bd27d39e1f45445eae302db628ba8e3.zip |
Fix reference-after-free in the new btree page split code, as reported by
the buildfarm via Stefan Kaltenbrunner.
Patch from Heikki Linnakangas.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/nbtree/nbtinsert.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index 7320e7cdbc0..98a46ab5857 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.150 2007/02/08 05:05:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.151 2007/02/08 13:52:55 alvherre Exp $ * *------------------------------------------------------------------------- */ @@ -953,7 +953,7 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright, xlrec.rightsib = BufferGetBlockNumber(rbuf); xlrec.firstright = firstright; xlrec.rnext = ropaque->btpo_next; - xlrec.level = lopaque->btpo.level; + xlrec.level = ropaque->btpo.level; rdata[0].data = (char *) &xlrec; rdata[0].len = SizeOfBtreeSplit; @@ -962,7 +962,7 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright, lastrdata = &rdata[0]; /* Log downlink on non-leaf pages. */ - if (lopaque->btpo.level > 0) + if (ropaque->btpo.level > 0) { lastrdata->next = lastrdata + 1; lastrdata++; @@ -1040,8 +1040,8 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright, recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); - PageSetLSN(leftpage, recptr); - PageSetTLI(leftpage, ThisTimeLineID); + PageSetLSN(origpage, recptr); + PageSetTLI(origpage, ThisTimeLineID); PageSetLSN(rightpage, recptr); PageSetTLI(rightpage, ThisTimeLineID); if (!P_RIGHTMOST(ropaque)) |