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)