pgpool2.git / summary / log / commit / refs

commit    266b67a00debee571b5e2e8d603150653925fe02
Author:   Muhammad Usama <m.usama@gmail.com>
Date:     Mon Nov 14 21:32:36 2016 +0000

    Fixing a potential crash in pool_stream functions.
    
    POOL_CONNECTION->con_info should be checked for null value before de-referencing
    when read or write fails on backend socket.


src/utils/pool_stream.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/utils/pool_stream.c b/src/utils/pool_stream.c index 9fa9db1b6..30d9da40f 100644 --- a/src/utils/pool_stream.c +++ b/src/utils/pool_stream.c @@ -207,7 +207,7 @@ int pool_read(POOL_CONNECTION *cp, void *buf, int len) cp->socket_state = POOL_SOCKET_ERROR; if (cp->isbackend) { - if (cp->con_info->swallow_termination == 1) + if (cp->con_info && cp->con_info->swallow_termination == 1) { cp->con_info->swallow_termination = 0; ereport(FATAL, @@ -354,7 +354,7 @@ char *pool_read2(POOL_CONNECTION *cp, int len) cp->socket_state = POOL_SOCKET_ERROR; if (cp->isbackend) { - if (cp->con_info->swallow_termination == 1) + if (cp->con_info && cp->con_info->swallow_termination == 1) { cp->con_info->swallow_termination = 0; ereport(FATAL, @@ -579,7 +579,7 @@ int pool_flush(POOL_CONNECTION *cp) { if (cp->isbackend) { - if (cp->con_info->swallow_termination == 1) + if (cp->con_info && cp->con_info->swallow_termination == 1) { cp->con_info->swallow_termination = 0; ereport(FATAL, @@ -634,7 +634,7 @@ int pool_flush_noerror(POOL_CONNECTION *cp) { if (cp->isbackend) { - if (cp->con_info->swallow_termination == 1) + if (cp->con_info && cp->con_info->swallow_termination == 1) { cp->con_info->swallow_termination = 0; ereport(FATAL, @@ -805,7 +805,7 @@ char *pool_read_string(POOL_CONNECTION *cp, int *len, int line) cp->socket_state = POOL_SOCKET_ERROR; if (cp->isbackend) { - if (cp->con_info->swallow_termination == 1) + if (cp->con_info && cp->con_info->swallow_termination == 1) { cp->con_info->swallow_termination = 0; ereport(FATAL, [parent: ef6c0c8fb089]