Thread

Commits

  1. Fix use of uninitialized variable in inline_function().

  1. Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Ranier Vilela <ranier.vf@gmail.com> — 2021-05-25T00:37:41Z

    Hi,
    
    Possible pointer TupleDesc rettupdesc used not initialized?
    
    if (!isNull) at line 4346 taking a true branch, the function
    check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    
    regards,
    Ranier Vilela
    
  2. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Mark Dilger <mark.dilger@enterprisedb.com> — 2021-05-25T01:42:20Z

    
    > On May 24, 2021, at 5:37 PM, Ranier Vilela <ranier.vf@gmail.com> wrote:
    > 
    > Hi,
    > 
    > Possible pointer TupleDesc rettupdesc used not initialized?
    > 
    > if (!isNull) at line 4346 taking a true branch, the function check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    
    Care to submit a patch?
    
    —
    Mark Dilger
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
    
    
    
    
    
  3. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Ranier Vilela <ranier.vf@gmail.com> — 2021-05-25T02:21:05Z

    Em seg., 24 de mai. de 2021 às 22:42, Mark Dilger <
    mark.dilger@enterprisedb.com> escreveu:
    
    >
    >
    > > On May 24, 2021, at 5:37 PM, Ranier Vilela <ranier.vf@gmail.com> wrote:
    > >
    > > Hi,
    > >
    > > Possible pointer TupleDesc rettupdesc used not initialized?
    > >
    > > if (!isNull) at line 4346 taking a true branch, the function
    > check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    >
    > Care to submit a patch?
    >
    Hi Mark, sorry but not.
    I examined the code and I can't say what the correct value is for
    rettupdesc.
    
    regards,
    Ranier Vilela
    
    <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
    Livre
    de vírus. www.avast.com
    <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
    <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
    
  4. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Zhihong Yu <zyu@yugabyte.com> — 2021-05-25T02:39:17Z

    On Mon, May 24, 2021 at 7:21 PM Ranier Vilela <ranier.vf@gmail.com> wrote:
    
    > Em seg., 24 de mai. de 2021 às 22:42, Mark Dilger <
    > mark.dilger@enterprisedb.com> escreveu:
    >
    >>
    >>
    >> > On May 24, 2021, at 5:37 PM, Ranier Vilela <ranier.vf@gmail.com> wrote:
    >> >
    >> > Hi,
    >> >
    >> > Possible pointer TupleDesc rettupdesc used not initialized?
    >> >
    >> > if (!isNull) at line 4346 taking a true branch, the function
    >> check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    >>
    >> Care to submit a patch?
    >>
    > Hi Mark, sorry but not.
    > I examined the code and I can't say what the correct value is for
    > rettupdesc.
    >
    
    Hi,
    It seems the following call would fill up value for rettupdesc :
    
    functypclass = get_expr_result_type((Node *) fexpr, NULL, &rettupdesc);
    
    Cheers
    
    >
    > regards,
    > Ranier Vilela
    >
    >
    > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Livre
    > de vírus. www.avast.com
    > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
    > <#m_-660087238671669467_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
    >
    
  5. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Ranier Vilela <ranier.vf@gmail.com> — 2021-05-25T11:51:38Z

    Em seg., 24 de mai. de 2021 às 23:35, Zhihong Yu <zyu@yugabyte.com>
    escreveu:
    
    >
    >
    > On Mon, May 24, 2021 at 7:21 PM Ranier Vilela <ranier.vf@gmail.com> wrote:
    >
    >> Em seg., 24 de mai. de 2021 às 22:42, Mark Dilger <
    >> mark.dilger@enterprisedb.com> escreveu:
    >>
    >>>
    >>>
    >>> > On May 24, 2021, at 5:37 PM, Ranier Vilela <ranier.vf@gmail.com>
    >>> wrote:
    >>> >
    >>> > Hi,
    >>> >
    >>> > Possible pointer TupleDesc rettupdesc used not initialized?
    >>> >
    >>> > if (!isNull) at line 4346 taking a true branch, the function
    >>> check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    >>>
    >>> Care to submit a patch?
    >>>
    >> Hi Mark, sorry but not.
    >> I examined the code and I can't say what the correct value is for
    >> rettupdesc.
    >>
    >
    > Hi,
    > It seems the following call would fill up value for rettupdesc :
    >
    > functypclass = get_expr_result_type((Node *) fexpr, NULL, &rettupdesc);
    >
    In short, do you suggest running half the else?
    To do this, you need to fill fexpr correctly.
    It will not always be a trivial solution.
    
    regards,
    Ranier Vilela
    
  6. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Tom Lane <tgl@sss.pgh.pa.us> — 2021-05-25T16:09:18Z

    Ranier Vilela <ranier.vf@gmail.com> writes:
    > Possible pointer TupleDesc rettupdesc used not initialized?
    > if (!isNull) at line 4346 taking a true branch, the function
    > check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    
    This seems to have been introduced by the SQL-function-body patch.
    
    After some study, I concluded that the reason we haven't noticed
    is that the case is nearly unreachable: check_sql_fn_retval never
    consults the rettupdesc unless the function result type is composite
    and the tlist length is more than one --- and we eliminated the latter
    case earlier in inline_function.
    
    There is an exception, namely if the single tlist item fails to
    be coercible to the output type, but that's hard to get to given
    that it'd have been checked while defining the SQL-body function.
    I did manage to reproduce a problem after turning off
    check_function_bodies so I could create a broken function.
    
    In any case, inline_function has no business assuming that
    check_sql_fn_retval doesn't need a valid value.
    
    The simplest way to fix this seems to be to move the code that
    creates "fexpr" and calls get_expr_result_type, so that we always
    do that even for SQL-body cases.  We could alternatively use some
    other way to obtain a result tupdesc in the SQL-body path; but
    creating the dummy FuncExpr node is cheap enough that I don't
    think it's worth contortions to avoid doing it.
    
    			regards, tom lane
    
    
    
    
  7. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Ranier Vilela <ranier.vf@gmail.com> — 2021-05-25T17:26:50Z

    Em ter., 25 de mai. de 2021 às 13:09, Tom Lane <tgl@sss.pgh.pa.us> escreveu:
    
    > Ranier Vilela <ranier.vf@gmail.com> writes:
    > > Possible pointer TupleDesc rettupdesc used not initialized?
    > > if (!isNull) at line 4346 taking a true branch, the function
    > > check_sql_fn_retval at line 4448 can use rettupdesc uninitialized.
    >
    > This seems to have been introduced by the SQL-function-body patch.
    >
    > After some study, I concluded that the reason we haven't noticed
    > is that the case is nearly unreachable: check_sql_fn_retval never
    > consults the rettupdesc unless the function result type is composite
    > and the tlist length is more than one --- and we eliminated the latter
    > case earlier in inline_function.
    >
    > There is an exception, namely if the single tlist item fails to
    > be coercible to the output type, but that's hard to get to given
    > that it'd have been checked while defining the SQL-body function.
    > I did manage to reproduce a problem after turning off
    > check_function_bodies so I could create a broken function.
    >
    > In any case, inline_function has no business assuming that
    > check_sql_fn_retval doesn't need a valid value.
    >
    > The simplest way to fix this seems to be to move the code that
    > creates "fexpr" and calls get_expr_result_type, so that we always
    > do that even for SQL-body cases.  We could alternatively use some
    > other way to obtain a result tupdesc in the SQL-body path; but
    > creating the dummy FuncExpr node is cheap enough that I don't
    > think it's worth contortions to avoid doing it.
    >
    Following the guidelines, I provided a patch.
    But I did more than requested, removed redundant variable and reduced the
    scope of two.
    
    vcregress check pass fine.
    
    regards,
    Ranier Vilela
    
  8. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Tom Lane <tgl@sss.pgh.pa.us> — 2021-05-25T17:35:38Z

    Ranier Vilela <ranier.vf@gmail.com> writes:
    > Following the guidelines, I provided a patch.
    
    Oh, I already pushed a fix, thanks.
    
    			regards, tom lane
    
    
    
    
  9. Re: Possible pointer var TupleDesc rettupdesc used not initialized (src/backend/optimizer/util/clauses.c)

    Ranier Vilela <ranier.vf@gmail.com> — 2021-05-25T17:43:51Z

    Em ter., 25 de mai. de 2021 às 14:35, Tom Lane <tgl@sss.pgh.pa.us> escreveu:
    
    > Ranier Vilela <ranier.vf@gmail.com> writes:
    > > Following the guidelines, I provided a patch.
    >
    > Oh, I already pushed a fix, thanks.
    >
    No problem!
    
    Thank you.
    
    regards,
    Ranier Vilela