Re: [PATCH gpgme] Fix an uninitialized variable.

Collin Funk via Gnupg-devel <[email protected]> Thu, 03 Jul 2025 20:42:43 -0700
Newsgroups gmane.comp.encryption.gpg.devel
Message-ID <[email protected]>
Collin Funk <[email protected]> writes:

> * src/engine-gpg.c (gpg_getdirect): Initialize ERR to zero to satisfy
> the loop condition.
>
> --
>
> Fixes-commit: 0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0
> Signed-off-by: Collin Funk <[email protected]>
> ---
>  src/engine-gpg.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/engine-gpg.c b/src/engine-gpg.c
> index b3399027..c6c5c4e6 100644
> --- a/src/engine-gpg.c
> +++ b/src/engine-gpg.c
> @@ -4226,7 +4226,7 @@ gpg_getdirect (void *engine, const char *argv[],
>                 gpgme_data_t dataout, unsigned int flags)
>  {
>    engine_gpg_t gpg = engine;
> -  gpgme_error_t err;
> +  gpgme_error_t err = 0;
>    int i;
>  
>    if (!engine || !argv || !dataout || flags)

Hi Werner, forgot to CC. Looks like this was from that commit a few
months ago. The original code:

    gpgme_error_t err;
    int i;
  
    if (!engine || !argv || !dataout || flags)
      return gpg_error (GPG_ERR_INV_VALUE);
  
    for (i=0; !err && argv[i]; i++)
      if ((err = add_arg (gpg, argv[i])))
        return err;

Basically, the first iteration will always read an uninitialized
variable. Seems mostly harmless and will probably mostly work, but UB is
UB. :)

Collin

_______________________________________________
Gnupg-devel mailing list
[email protected]
https://lists.gnupg.org/mailman/listinfo/gnupg-devel
signature.asc (application/pgp-signature, 832 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEI3EYVQjRMXvVeOXMjOZJGuMNfXUFAmhnTbMACgkQjOZJGuMN
fXW6LhAAsVHleMRm0VBSi66PPAxI7OE6RgNoDRnqy9smYditydt9j4jQJd681paQ
DQAd5Mmy9o8/YJmBAQI0ejeUuG2oGh4hMTbkYwsA3sNABOsf9poNlTSn541GbEFP
Qz0FgGeNSsrqAQmXDBfxIFeCHCKpYAS8P4UYdXflQJw0bcLY6y+Wl8Zv9ZQrOf91
26//jWk1B1sD2J5+FtWlfq6N9RpnnpyiRd8itxyjX7kb2oYBSFwV3jQsqgj5JXlZ
x2rcWud8MekFR5VgvXGH0SRn72Sz+Gt+DiTwM+o2TWsmNR2xu2FvDnkwpF0OUfHZ
S/9dWtEg6UnY4kpU8/bAMZ/07j4Q65KcNZUeXKJ2dmjbzM+jY1ZuP0oJ5owgO/1k
FTn0eocSmkILZmb6uGDIItPCToqvYsarv1SXVOPhWtniF7RmnNl2kxDap74eNNr0
rtDbAiP4KJTC6KFEFmlNHgJK2vb03I1YFnrVV2n0a4llDJPEzCfU1wh8u8LOfXKG
xk7VvyePcv1rMbkwibdIyQlEONNGWgYRWzllzBKphjr5dfUo3tJffACWAQ5jPkQP
AarU2764WMfZYY2gmXegUQdS3xvwcZJ+fExjdJ5w1rhDbvvg7+UvncIuRs3ZeDpE
vJ++CD9buuMS4CtlXulcvo7B5johK6Wti20rPojlHu3nKQTkfBg=
=MDiX
-----END PGP SIGNATURE-----