summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2019-12-29 21:53:32 +0100
committerNikos Mavrogiannopoulos <nmav@redhat.com>2020-01-03 10:56:18 +0100
commitdad163998fb38a27197b43bdd3e805f4a6817251 (patch)
tree5824ed3a3db0da7349799586a5a061391cf92dd7 /lib
parent91e811383c4b1849852ebcfc14fde382b083a779 (diff)
downloadgnutls-dad163998fb38a27197b43bdd3e805f4a6817251.tar.gz
gnutls_x509_crt_get_extension_info: optimize when critical equals NULL
That is, do not perform the look ups necessary to calculate the value when it will not be used. Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/x509/x509.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/x509/x509.c b/lib/x509/x509.c
index bf3e1e8f16..57c7182894 100644
--- a/lib/x509/x509.c
+++ b/lib/x509/x509.c
@@ -2695,16 +2695,16 @@ gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx,
if (oid && len > 0 && ((uint8_t*)oid)[len-1] == 0)
(*oid_size)--;
- snprintf(name, sizeof(name),
- "tbsCertificate.extensions.?%u.critical", indx + 1);
- len = sizeof(str_critical);
- result = asn1_read_value(cert->cert, name, str_critical, &len);
- if (result != ASN1_SUCCESS) {
- gnutls_assert();
- return _gnutls_asn2err(result);
- }
-
if (critical) {
+ snprintf(name, sizeof(name),
+ "tbsCertificate.extensions.?%u.critical", indx + 1);
+ len = sizeof(str_critical);
+ result = asn1_read_value(cert->cert, name, str_critical, &len);
+ if (result != ASN1_SUCCESS) {
+ gnutls_assert();
+ return _gnutls_asn2err(result);
+ }
+
if (str_critical[0] == 'T')
*critical = 1;
else