diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2000-12-13 13:47:33 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2000-12-13 13:47:33 +0000 |
commit | 2aff7727f700384de6ced15a97888a8405cb1214 (patch) | |
tree | aa5c50faad985a6acf8f1373d5dcd99f0cade1ca /crypto/x509v3/v3_prn.c | |
parent | cc93ae3ef4f76bcf64164ef3f83854bdfd4a074e (diff) | |
download | openssl-new-2aff7727f700384de6ced15a97888a8405cb1214.tar.gz |
Rewrite the extension code to use an ASN1_ITEM structure
for its ASN1 operations as well as the old style function
pointers (i2d, d2i, new, free). Change standard extensions
to support this.
Fix a warning in BN_mul(), bn_mul.c about uninitialised 'j'.
Diffstat (limited to 'crypto/x509v3/v3_prn.c')
-rw-r--r-- | crypto/x509v3/v3_prn.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/crypto/x509v3/v3_prn.c b/crypto/x509v3/v3_prn.c index 5416f662d3..ae1b7c81c0 100644 --- a/crypto/x509v3/v3_prn.c +++ b/crypto/x509v3/v3_prn.c @@ -100,7 +100,8 @@ void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, int ml) int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent) { - char *ext_str = NULL, *value = NULL; + void *ext_str = NULL; + char *value = NULL; unsigned char *p; X509V3_EXT_METHOD *method; STACK_OF(CONF_VALUE) *nval = NULL; @@ -108,8 +109,11 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int inde if(!(method = X509V3_EXT_get(ext))) return unknown_ext_print(out, ext, flag, indent, 0); p = ext->value->data; - if(!(ext_str = method->d2i(NULL, &p, ext->value->length))) - return unknown_ext_print(out, ext, flag, indent, 1); + if(method->it) ext_str = ASN1_item_d2i(NULL, &p, ext->value->length, method->it); + else ext_str = method->d2i(NULL, &p, ext->value->length); + + if(!ext_str) unknown_ext_print(out, ext, flag, indent, 1); + if(method->i2s) { if(!(value = method->i2s(method, ext_str))) { ok = 0; @@ -138,7 +142,8 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int inde err: sk_CONF_VALUE_pop_free(nval, X509V3_conf_free); if(value) OPENSSL_free(value); - method->ext_free(ext_str); + if(method->it) ASN1_item_free(ext_str, method->it); + else method->ext_free(ext_str); return ok; } |