From 46447151647dfd68002ca4e1621e800adc6ffd6f Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Fri, 28 Dec 2018 14:28:29 +0100 Subject: [PATCH] Consider the case dereferencing weakref in conn_poll returns NULL It shouldn't but handle the case to avoid a possible null pointer dereferencing. --- psycopg/connection_int.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c index 7f6b7551..17509cfe 100644 --- a/psycopg/connection_int.c +++ b/psycopg/connection_int.c @@ -1081,7 +1081,16 @@ conn_poll(connectionObject *self) /* An async query has just finished: parse the tuple in the * target cursor. */ cursorObject *curs; - PyObject *py_curs = PyWeakref_GetObject(self->async_cursor); + PyObject *py_curs; + if (!(py_curs = PyWeakref_GetObject(self->async_cursor))) { + /* It shouldn't happen but consider it to avoid dereferencing + * a null pointer below. */ + pq_clear_async(self); + PyErr_SetString(PyExc_SystemError, + "got null dereferencing cursor weakref"); + res = PSYCO_POLL_ERROR; + break; + } if (Py_None == py_curs) { pq_clear_async(self); PyErr_SetString(InterfaceError,