Re: asn1/a_bitstring.c: zeroing after recallocarray

2020-09-02 Thread Otto Moerbeek
On Thu, Sep 03, 2020 at 07:03:14AM +0200, Theo Buehler wrote:

> The memset is not needed as recallocarray(3) does the zeroing already.
> (I also think the a->data == NULL check in the if clause is redundant,
> but I'm just suggesting to remove a bit that confused me)

ok,

-Otto

> 
> Index: asn1/a_bitstr.c
> ===
> RCS file: /var/cvs/src/lib/libcrypto/asn1/a_bitstr.c,v
> retrieving revision 1.29
> diff -u -p -U7 -r1.29 a_bitstr.c
> --- asn1/a_bitstr.c   20 Oct 2018 16:07:09 -  1.29
> +++ asn1/a_bitstr.c   15 Jun 2020 12:46:00 -
> @@ -211,16 +211,14 @@ ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING 
>   if ((a->length < (w + 1)) || (a->data == NULL)) {
>   if (!value)
>   return(1); /* Don't need to set */
>   if ((c = recallocarray(a->data, a->length, w + 1, 1)) == NULL) {
>   ASN1error(ERR_R_MALLOC_FAILURE);
>   return 0;
>   }
> - if (w + 1 - a->length > 0)
> - memset(c + a->length, 0, w + 1 - a->length);
>   a->data = c;
>   a->length = w + 1;
>   }
>   a->data[w] = ((a->data[w]) & iv) | v;
>   while ((a->length > 0) && (a->data[a->length - 1] == 0))
>   a->length--;
>  
> 



asn1/a_bitstring.c: zeroing after recallocarray

2020-09-02 Thread Theo Buehler
The memset is not needed as recallocarray(3) does the zeroing already.
(I also think the a->data == NULL check in the if clause is redundant,
but I'm just suggesting to remove a bit that confused me)

Index: asn1/a_bitstr.c
===
RCS file: /var/cvs/src/lib/libcrypto/asn1/a_bitstr.c,v
retrieving revision 1.29
diff -u -p -U7 -r1.29 a_bitstr.c
--- asn1/a_bitstr.c 20 Oct 2018 16:07:09 -  1.29
+++ asn1/a_bitstr.c 15 Jun 2020 12:46:00 -
@@ -211,16 +211,14 @@ ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING 
if ((a->length < (w + 1)) || (a->data == NULL)) {
if (!value)
return(1); /* Don't need to set */
if ((c = recallocarray(a->data, a->length, w + 1, 1)) == NULL) {
ASN1error(ERR_R_MALLOC_FAILURE);
return 0;
}
-   if (w + 1 - a->length > 0)
-   memset(c + a->length, 0, w + 1 - a->length);
a->data = c;
a->length = w + 1;
}
a->data[w] = ((a->data[w]) & iv) | v;
while ((a->length > 0) && (a->data[a->length - 1] == 0))
a->length--;