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

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Xing Guo <higuoxing(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: PL/Python: Fix return in the middle of PG_TRY() block.
Date: 2023-01-12 18:44:33
Message-ID: 20230112184433.GA2104952@nathanxps13
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jacob Champion 2023-01-12 19:04:49 Re: Can we let extensions change their dumped catalog schemas?
Previous Message David G. Johnston 2023-01-12 18:37:48 Re: Named Operators