Re: PL/Python: Fix return in the middle of PG_TRY() block.

Поиск
Список
Период
Сортировка
От Nathan Bossart
Тема Re: PL/Python: Fix return in the middle of PG_TRY() block.
Дата
Msg-id 20230112184433.GA2104952@nathanxps13
обсуждение исходный текст
Ответ на PL/Python: Fix return in the middle of PG_TRY() block.  (Xing Guo <higuoxing@gmail.com>)
Ответы Re: PL/Python: Fix return in the middle of PG_TRY() block.  (Michael Paquier <michael@paquier.xyz>)
Re: PL/Python: Fix return in the middle of PG_TRY() block.  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
On Thu, Jan 12, 2023 at 11:19:29PM +0800, Xing Guo wrote:
> I was running static analyser against PostgreSQL and found there're 2
> return statements in PL/Python module which is not safe. Patch is
> attached.

Is the problem that PG_exception_stack and error_context_stack aren't
properly reset?

> @@ -690,12 +690,12 @@ PLy_trigger_build_args(FunctionCallInfo fcinfo, PLyProcedure *proc, HeapTuple *r
>      PyObject   *volatile pltdata = NULL;
>      char       *stroid;
>  
> +    pltdata = PyDict_New();
> +    if (!pltdata)
> +        return NULL;
> +
>      PG_TRY();
>      {
> -        pltdata = PyDict_New();
> -        if (!pltdata)
> -            return NULL;
> -
>          pltname = PLyUnicode_FromString(tdata->tg_trigger->tgname);
>          PyDict_SetItemString(pltdata, "name", pltname);
>          Py_DECREF(pltname);

There's another "return" later on in this PG_TRY block.  I wonder if it's
possible to detect this sort of thing at compile time.

-- 
Nathan Bossart
Amazon Web Services: https://aws.amazon.com



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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Named Operators
Следующее
От: Jacob Champion
Дата:
Сообщение: Re: Can we let extensions change their dumped catalog schemas?