Re: [BUG] Uninitializaed configOut.leafType used. - Mailing list pgsql-bugs

From Andres Freund
Subject Re: [BUG] Uninitializaed configOut.leafType used.
Date
Msg-id 20191113180320.gl27ldjjgex2x6ad@alap3.anarazel.de
Whole thread Raw
In response to RE: [BUG] Uninitializaed configOut.leafType used.  (Ranier Vilela <ranier_gyn@hotmail.com>)
Responses RE: [BUG] Uninitializaed configOut.leafType used.
List pgsql-bugs
Hi,

On 2019-11-13 17:55:40 +0000, Ranier Vilela wrote:
> Ok, so all these commands are for what?

"commands"?


>             case SPGIST_CONFIG_PROC:
>                 ok = check_amproc_signature(procform->amproc, VOIDOID, true,
>                                             2, 2, INTERNALOID, INTERNALOID);
>                 configIn.attType = procform->amproclefttype;
>                 memset(&configOut, 0, sizeof(configOut));
> 
>                 OidFunctionCall2(procform->amproc,
>                                  PointerGetDatum(&configIn),
>                                  PointerGetDatum(&configOut));
> 
>                 configOutLefttype = procform->amproclefttype;
>                 configOutRighttype = procform->amprocrighttype;
> 
>                 /*
>                  * When leaf and attribute types are the same, compress
>                  * function is not required and we set corresponding bit in
>                  * functionset for later group consistency check.
>                  */
>                 if (!OidIsValid(configOut.leafType) ||
>                     configOut.leafType == configIn.attType)
>                 {
> 
> When case SPGIST_CONFIG_PROC, OidIsValid(configOut.leafType) is tested,
> but when case SPGIST_COMPRESS_PROC is fired, OidIsValid(configOut.leafType) is not necessary and configOut.leafType
> happy accessed?

Even if that were a problem - and I don't see why - that'd still not
make configOut.leafType be uninitialized. The SPGIST_CONFIG_PROC case is
always hit before SPGIST_COMPRESS_PROC, therefore configOut is always
initialized (c.f. memset(0) and the call to amproc to initialize the
contents).

And the OidIsValid() call is about whether a leafType is set or not, the
call to check_amproc_signature() doesn't need that.


- Andres



pgsql-bugs by date:

Previous
From: Ranier Vilela
Date:
Subject: RE: [BUG] Uninitializaed configOut.leafType used.
Next
From: Tom Lane
Date:
Subject: Re: BUG #16112: large, unexpected memory consumption