pgsql: Fix obscure segfault condition in PL/Python In PLy_output(),

Поиск
Список
Период
Сортировка
От petere@postgresql.org (Peter Eisentraut)
Тема pgsql: Fix obscure segfault condition in PL/Python In PLy_output(),
Дата
Msg-id 20091103082951.2BEAE753FB7@cvs.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
Fix obscure segfault condition in PL/Python

In PLy_output(), when the elog() call in the TRY branch throws an exception
(this can happen when a statement timeout kicks in, for example), the
PyErr_SetString() call in the CATCH branch can cause a segfault, because the
Py_XDECREF(so) call before it releases memory that is still used by the sv
variable that PyErr_SetString() uses as argument, because sv points into
memory owned by so.

Backpatched back to 8.0, where this code was introduced.

I also threw in a couple of volatile declarations for variables that are used
before and after the TRY.  I don't think they caused the crash that I
observed, but they could become issues.

Tags:
----
REL8_2_STABLE

Modified Files:
--------------
    pgsql/src/pl/plpython:
        plpython.c (r1.90.2.4 -> r1.90.2.5)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpython/plpython.c?r1=1.90.2.4&r2=1.90.2.5)

В списке pgsql-committers по дате отправления:

Предыдущее
От: petere@postgresql.org (Peter Eisentraut)
Дата:
Сообщение: pgsql: Fix obscure segfault condition in PL/Python In PLy_output(),
Следующее
От: petere@postgresql.org (Peter Eisentraut)
Дата:
Сообщение: pgsql: Fix obscure segfault condition in PL/Python In PLy_output(),