diff options
author | FdaSilvaYY <fdasilvayy@gmail.com> | 2017-09-28 23:30:22 +0200 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2017-10-03 12:52:19 +0200 |
commit | 270a4bba49849de7f928f4fab186205abd132411 (patch) | |
tree | e7687d33244805badcfb2892058851ed04927b21 /crypto/x509v3/v3_extku.c | |
parent | 8e8e507ed720ca0acbeb15e238bf99519a9e7aab (diff) |
Use more pre-allocation
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4379)
Diffstat (limited to 'crypto/x509v3/v3_extku.c')
-rw-r--r-- | crypto/x509v3/v3_extku.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/crypto/x509v3/v3_extku.c b/crypto/x509v3/v3_extku.c index bae755e3f2..6cb0d2cc17 100644 --- a/crypto/x509v3/v3_extku.c +++ b/crypto/x509v3/v3_extku.c @@ -74,14 +74,17 @@ static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, char *extval; ASN1_OBJECT *objtmp; CONF_VALUE *val; + const int num = sk_CONF_VALUE_num(nval); int i; - if ((extku = sk_ASN1_OBJECT_new_null()) == NULL) { + extku = sk_ASN1_OBJECT_new_null(); + if (extku == NULL || !sk_ASN1_OBJECT_reserve(extku, num)) { X509V3err(X509V3_F_V2I_EXTENDED_KEY_USAGE, ERR_R_MALLOC_FAILURE); + sk_ASN1_OBJECT_free(extku); return NULL; } - for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { + for (i = 0; i < num; i++) { val = sk_CONF_VALUE_value(nval, i); if (val->value) extval = val->value; @@ -94,7 +97,7 @@ static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, X509V3_conf_err(val); return NULL; } - sk_ASN1_OBJECT_push(extku, objtmp); + sk_ASN1_OBJECT_push(extku, objtmp); /* no failure as it was reserved */ } return extku; } |