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