diff options
author | Robert Haas <rhaas@postgresql.org> | 2016-09-28 11:19:46 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2016-09-28 11:19:46 -0400 |
commit | 308985b0b404a5891a1a629f38cc46c2b2dcb4be (patch) | |
tree | f9b07ab0adab9c68b27037be30b2f91a1d7f0d37 /src/backend/replication/logical/reorderbuffer.c | |
parent | babe05bc2b781eb3eb84a18d7010d08277e2e399 (diff) | |
download | postgresql-308985b0b404a5891a1a629f38cc46c2b2dcb4be.tar.gz postgresql-308985b0b404a5891a1a629f38cc46c2b2dcb4be.zip |
Fix dangling pointer problem in ReorderBufferSerializeChange.
Commit 3fe3511d05127cc024b221040db2eeb352e7d716 introduced a new
case into this function, but neglected to ensure that the "ondisk"
pointer got updated after a possible reallocation as the code does
in other cases.
Stas Kelvich, per diagnosis by Konstantin Knizhnik.
Diffstat (limited to 'src/backend/replication/logical/reorderbuffer.c')
-rw-r--r-- | src/backend/replication/logical/reorderbuffer.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 9b430b9acb5..e2a502c4431 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -2250,6 +2250,9 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn, data = ((char *) rb->outbuf) + sizeof(ReorderBufferDiskChange); + /* might have been reallocated above */ + ondisk = (ReorderBufferDiskChange *) rb->outbuf; + /* write the prefix including the size */ memcpy(data, &prefix_size, sizeof(Size)); data += sizeof(Size); |