aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2015-03-09 14:31:10 +0900
committerFujii Masao <fujii@postgresql.org>2015-03-09 14:31:10 +0900
commitc74c04b8aa03f05983f940ee94c86a5cc1945393 (patch)
tree59fa89645c2dde751b146792bba98da315cb840c /src
parent5a2a48f0367e24f8f12cfe0a90a886dae0db1ce2 (diff)
downloadpostgresql-c74c04b8aa03f05983f940ee94c86a5cc1945393.tar.gz
postgresql-c74c04b8aa03f05983f940ee94c86a5cc1945393.zip
Add missing "goto err" statements in xlogreader.c.
Spotted by Andres Freund.
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/xlogreader.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c
index 60470b56af7..5bd07e381d8 100644
--- a/src/backend/access/transam/xlogreader.c
+++ b/src/backend/access/transam/xlogreader.c
@@ -1019,14 +1019,20 @@ DecodeXLogRecord(XLogReaderState *state, XLogRecord *record, char **errormsg)
COPY_HEADER_FIELD(&blk->data_len, sizeof(uint16));
/* cross-check that the HAS_DATA flag is set iff data_length > 0 */
if (blk->has_data && blk->data_len == 0)
+ {
report_invalid_record(state,
"BKPBLOCK_HAS_DATA set, but no data included at %X/%X",
(uint32) (state->ReadRecPtr >> 32), (uint32) state->ReadRecPtr);
+ goto err;
+ }
if (!blk->has_data && blk->data_len != 0)
+ {
report_invalid_record(state,
"BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X",
(unsigned int) blk->data_len,
(uint32) (state->ReadRecPtr >> 32), (uint32) state->ReadRecPtr);
+ goto err;
+ }
datatotal += blk->data_len;
if (blk->has_image)