mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-04 15:07:22 +02:00
Fix crash bug in RestoreSnapshot.
If serialized_snapshot->subxcnt > 0 and serialized_snapshot->xcnt == 0, the old coding would do the wrong thing and crash. This can happen on standby servers. Report by Andreas Seltenreich. Patch by Thomas Munro, reviewed by Amit Kapila and tested by Andreas Seltenreich.
This commit is contained in:
parent
8caf9fe625
commit
8f4a369c28
@ -1573,7 +1573,8 @@ RestoreSnapshot(char *start_address)
|
|||||||
/* Copy SubXIDs, if present. */
|
/* Copy SubXIDs, if present. */
|
||||||
if (serialized_snapshot->subxcnt > 0)
|
if (serialized_snapshot->subxcnt > 0)
|
||||||
{
|
{
|
||||||
snapshot->subxip = snapshot->xip + serialized_snapshot->xcnt;
|
snapshot->subxip = ((TransactionId *) (snapshot + 1)) +
|
||||||
|
serialized_snapshot->xcnt;
|
||||||
memcpy(snapshot->subxip, serialized_xids + serialized_snapshot->xcnt,
|
memcpy(snapshot->subxip, serialized_xids + serialized_snapshot->xcnt,
|
||||||
serialized_snapshot->subxcnt * sizeof(TransactionId));
|
serialized_snapshot->subxcnt * sizeof(TransactionId));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user