Re: Dereferenced pointer in tablesample.c - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Dereferenced pointer in tablesample.c
Date
Msg-id 6975.1435682872@sss.pgh.pa.us
Whole thread Raw
In response to Re: Dereferenced pointer in tablesample.c  (Petr Jelinek <petr@2ndquadrant.com>)
List pgsql-hackers
Petr Jelinek <petr@2ndquadrant.com> writes:
> On 2015-06-30 09:10, Michael Paquier wrote:
>> If the expression argstate is NULL when calling ExecInitExpr(), argstate
>> is going to be NULL and dereferenced afterwards, see execQual.c for more
>> details. Hence I think that the patch attached should be applied. Thoughts?

> Well, yes the ExecEvalExpr should be in the else block if we'd keep the 
> NULL logic there.

> However after rereading the code, ISTM the ExecInitExpr will only return 
> NULL if the argexpr is NULL and argexpr is added by ParseTableSample 
> using the transformExpr on every argument which comes from grammar and 
> those are a_exprs which AFAIK will never be NULL. So I actually think 
> that the argstate can never be NULL in practice.

Indeed.  ParseTableSample() is badly in need of a rewrite, but I agree
that it's not going to produce null expression trees.

> Patch attached.

Will push this shortly.
        regards, tom lane



pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: LWLock deadlock and gdb advice
Next
From: Heikki Linnakangas
Date:
Subject: Re: pg_rewind failure by file deletion in source server