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]