diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2016-05-04 14:50:14 +0100 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2016-05-04 20:09:02 +0100 |
commit | 9d103dbb6f44dbe5d430356e5560c84984ada049 (patch) | |
tree | 76dcea516513cd612db32ad47f37e0cf60c4b088 /crypto/asn1/tasn_prn.c | |
parent | c7e6ae6a810d9b65fa604f5ca3a003c5164f3c5f (diff) | |
download | openssl-9d103dbb6f44dbe5d430356e5560c84984ada049.tar.gz |
support embed in ASN.1 print
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/asn1/tasn_prn.c')
-rw-r--r-- | crypto/asn1/tasn_prn.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/crypto/asn1/tasn_prn.c b/crypto/asn1/tasn_prn.c index f6bd2189cf..7a96aca962 100644 --- a/crypto/asn1/tasn_prn.c +++ b/crypto/asn1/tasn_prn.c @@ -314,6 +314,7 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, { int i, flags; const char *sname, *fname; + ASN1_VALUE *tfld; flags = tt->flags; if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME) sname = ASN1_ITEM_ptr(tt->item)->sname; @@ -323,6 +324,16 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, fname = NULL; else fname = tt->field_name; + + /* + * If field is embedded then fld needs fixing so it is a pointer to + * a pointer to a field. + */ + if (flags & ASN1_TFLG_EMBED) { + tfld = (ASN1_VALUE *)fld; + fld = &tfld; + } + if (flags & ASN1_TFLG_SK_MASK) { char *tname; ASN1_VALUE *skitem; |