Re: [PATCH] cipher:pk:sexp: Remove bogus checks in SEXP parsing.

Collin Funk via Gcrypt-devel <[email protected]> Tue, 17 Jun 2025 19:20:38 -0700
Newsgroups gmane.comp.encryption.gpg.libgcrypt.devel
Message-ID <[email protected]>
Jacob Bachmeyer via Gcrypt-devel <[email protected]> writes:

> NACK!  NACK!  NACK!
>
> Those are checks for integer overflow.  (They may even be correct if
> VALUELEN is unsigned.)
>
> If VALUELEN is a signed type, they are undefined behavior and need to
> be fixed, not removed.

It is a size_t so it is unsigned.

But it looks harmless to remove to me. The call to 'malloc' in
'_gcry_sexp_nth_buffer' will fail before VALUELEN overflows.

Here is an example program:

    $ cat main.c 
    #include <stdint.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    int
    main (void)
    {
      char *p = malloc (SIZE_MAX / 8 / 2);
      if (p)
        abort ();
      printf ("%s\n", strerror (errno));
      return 0;
    }
    $ gcc main.c 
    $ ./a.out 
    Cannot allocate memory

Collin

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

iQIzBAEBCgAdFiEEI3EYVQjRMXvVeOXMjOZJGuMNfXUFAmhSInYACgkQjOZJGuMN
fXU1sQ/+JK08n18+/Ap2wR5QvG92aBW7oVqCvwh/3+kDUnlEgw/Jdhg5ZLmBBIUR
9zpNFIhrpYhxlS0EdI47/Aezv3xUIJMG89L2KvKeOBpQ0jezHTgImzIwitsrB50o
wKOaAmxJ+Le1hAirfzKkUW+KpM/+2RTbEoe0POLvNJXbxQi1HN65TAqz9KTVj30H
KCzo17M26FTURigXzl19RbXDF2OdrHffVXb6Rv7cuXn+LtkXXvEAJG2RL6/l3dep
bOaSaLhVEyk+4M8nxvW35aI6/PLAOh5InvIgtlIuQkOQXNda5Uq4tEsOjtZrVS5P
pPijUjftgzVUl1SOxLUwZLb0uKs8/f9Wy4EJVIPk7ZyH8LzAT8AsuhNwywnLgVnx
5GKbYGKZaBKKwb1JUeR5InkYiGmPwsa4z2M0Ibclnao0zwZxinGnJHZhwvfwOXJ6
fSn4idKLk2FSCfZGqPLXXA9uHzLbEeBCSYP+qfHAwLLEDiVa8Q0WDJ6cEfxz59MI
419ZvKPIETOBAMFEJ/aYIDx0eBCHsOd23DCXAWY2eoXghtNQtZTJ3fsnc+MIkluP
8Z+gRVmJ9VoHkKf3K6nwGojh+iTSaa9DQOQCclMkkCQbacvTAJW5xisES4TK7otM
6QAKTMbzVc+oVCLemOs8jj+ULzvnKam394RA2ecILsgx+i2bXI4=
=3wNn
-----END PGP SIGNATURE-----