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.
Re: PL/Python: Fix return in the middle of PG_TRY() block. |
Список | 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 по дате отправления: