Jacob Bachmeyer via Gcrypt-devel <gcrypt-devel@gnupg.org> 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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Gcrypt-devel mailing list
Gcrypt-devel@gnupg.org
https://lists.gnupg.org/mailman/listinfo/gcrypt-devel

Reply via email to