X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fbn%2Fbn_lib.c;h=89a3267b4af10485ef95b9ffe5e33a169e352feb;hp=3e4965d695e5c7655d0aea5bca5f06252ae3deb7;hb=58f0f52e67b5053fd4f768a38c2b50bd77c9329b;hpb=55b3c877c7ec6ba97c1421b34767f88a3c56b51f diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 3e4965d695..89a3267b4a 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -458,12 +458,20 @@ BIGNUM *bn_dup_expand(const BIGNUM *b, int words) if (a) { r = BN_new(); - r->top = b->top; - r->dmax = words; - r->neg = b->neg; - r->d = a; + if (r) + { + r->top = b->top; + r->dmax = words; + r->neg = b->neg; + r->d = a; + } + else + { + /* r == NULL, BN_new failure */ + OPENSSL_free(a); + } } - /* Otherwise, there was an error in allocation in + /* If a == NULL, there was an error in allocation in internal_bn_expand(), and NULL should be returned */ } else