mirror of
https://github.com/postgres/postgres.git
synced 2025-07-24 14:22:24 +03:00
Protect against XLogReaderAllocate() failing to allocate memory.
logical.c's StartupDecodingContext() forgot to check whether XLogReaderAllocate() returns NULL indicating a memory allocation failure. This could lead, although quite unlikely, lead to a NULL pointer dereference. This only applies to 9.4 as earlier versions don't do logical decoding, and later versions don't return NULL after allocation failures in XLogReaderAllocate(). Michael Paquier, with minor changes by me.
This commit is contained in:
@ -162,6 +162,11 @@ StartupDecodingContext(List *output_plugin_options,
|
||||
ctx->slot = slot;
|
||||
|
||||
ctx->reader = XLogReaderAllocate(read_page, ctx);
|
||||
if (!ctx->reader)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_OUT_OF_MEMORY),
|
||||
errmsg("out of memory")));
|
||||
|
||||
ctx->reader->private_data = ctx;
|
||||
|
||||
ctx->reorder = ReorderBufferAllocate();
|
||||
|
Reference in New Issue
Block a user