Обсуждение: Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)

Поиск
Список
Период
Сортировка

Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)

От
Peter Eisentraut
Дата:
On 16.01.25 02:12, Ranier Vilela wrote:
> Per Coverity.
> 
> CID 1590024:    (CHECKED_RETURN)
> Calling "pg_b64_encode" without checking return value (as is done 
> elsewhere 8 out of 10 times).
> 
> The function *pg_b64_encode* has in the comments:
> [0]  "and -1 in the event of an error"
> 
> So, the function can fail.
> All other calls check the return, In this case it could not be different.
> 
> Fix by checking the return and reporting a message to the user,
> in case of failure.

Thanks, fixed.  (I changed the ereports to elogs, which is how other 
call sites do it.)

I also fixed a related problem in the pg_b64_decode() calls in libpq.

Maybe we could put a pg_nodiscard attribute on pg_b64_encode() and 
pg_b64_decode()?

> [0] I think the most correct would be *or* not *and* word?

I think both are ok here.



Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)

От
Ranier Vilela
Дата:


Em qui., 16 de jan. de 2025 às 05:07, Peter Eisentraut <peter@eisentraut.org> escreveu:
On 16.01.25 02:12, Ranier Vilela wrote:
> Per Coverity.
>
> CID 1590024:    (CHECKED_RETURN)
> Calling "pg_b64_encode" without checking return value (as is done
> elsewhere 8 out of 10 times).
>
> The function *pg_b64_encode* has in the comments:
> [0]  "and -1 in the event of an error"
>
> So, the function can fail.
> All other calls check the return, In this case it could not be different.
>
> Fix by checking the return and reporting a message to the user,
> in case of failure.

Thanks, fixed.  (I changed the ereports to elogs, which is how other
call sites do it.)
Thank you.
 

I also fixed a related problem in the pg_b64_decode() calls in libpq.

Maybe we could put a pg_nodiscard attribute on pg_b64_encode() and
pg_b64_decode()?
+1


> [0] I think the most correct would be *or* not *and* word?

I think both are ok here.
Ok.

best regards,
Ranier Vilela

Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)

От
Peter Eisentraut
Дата:
On 16.01.25 11:23, Ranier Vilela wrote:
> 
> 
> Em qui., 16 de jan. de 2025 às 05:07, Peter Eisentraut 
> <peter@eisentraut.org <mailto:peter@eisentraut.org>> escreveu:
> 
>     On 16.01.25 02:12, Ranier Vilela wrote:
>      > Per Coverity.
>      >
>      > CID 1590024:    (CHECKED_RETURN)
>      > Calling "pg_b64_encode" without checking return value (as is done
>      > elsewhere 8 out of 10 times).
>      >
>      > The function *pg_b64_encode* has in the comments:
>      > [0]  "and -1 in the event of an error"
>      >
>      > So, the function can fail.
>      > All other calls check the return, In this case it could not be
>     different.
>      >
>      > Fix by checking the return and reporting a message to the user,
>      > in case of failure.
> 
>     Thanks, fixed.  (I changed the ereports to elogs, which is how other
>     call sites do it.)
> 
> Thank you.
> 
> 
>     I also fixed a related problem in the pg_b64_decode() calls in libpq.
> 
>     Maybe we could put a pg_nodiscard attribute on pg_b64_encode() and
>     pg_b64_decode()?
> 
> +1

done




Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)

От
Ranier Vilela
Дата:
Em sex., 17 de jan. de 2025 às 05:11, Peter Eisentraut <peter@eisentraut.org> escreveu:
On 16.01.25 11:23, Ranier Vilela wrote:
>
>
> Em qui., 16 de jan. de 2025 às 05:07, Peter Eisentraut
> <peter@eisentraut.org <mailto:peter@eisentraut.org>> escreveu:
>
>     On 16.01.25 02:12, Ranier Vilela wrote:
>      > Per Coverity.
>      >
>      > CID 1590024:    (CHECKED_RETURN)
>      > Calling "pg_b64_encode" without checking return value (as is done
>      > elsewhere 8 out of 10 times).
>      >
>      > The function *pg_b64_encode* has in the comments:
>      > [0]  "and -1 in the event of an error"
>      >
>      > So, the function can fail.
>      > All other calls check the return, In this case it could not be
>     different.
>      >
>      > Fix by checking the return and reporting a message to the user,
>      > in case of failure.
>
>     Thanks, fixed.  (I changed the ereports to elogs, which is how other
>     call sites do it.)
>
> Thank you.
>
>
>     I also fixed a related problem in the pg_b64_decode() calls in libpq.
>
>     Maybe we could put a pg_nodiscard attribute on pg_b64_encode() and
>     pg_b64_decode()?
>
> +1

done
Thanks Peter.

best regards,
Ranier Vilela