diff options
Diffstat (limited to 'crypto/openssl/apps/asn1pars.c')
-rw-r--r-- | crypto/openssl/apps/asn1pars.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/crypto/openssl/apps/asn1pars.c b/crypto/openssl/apps/asn1pars.c index 7db40ad..c89b358 100644 --- a/crypto/openssl/apps/asn1pars.c +++ b/crypto/openssl/apps/asn1pars.c @@ -278,6 +278,7 @@ bad: tmplen=num; for (i=0; i<sk_num(osk); i++) { + int typ; ASN1_TYPE *atmp; j=atoi(sk_value(osk,i)); if (j == 0) @@ -296,6 +297,15 @@ bad: ERR_print_errors(bio_err); goto end; } + typ = ASN1_TYPE_get(at); + if ((typ == V_ASN1_OBJECT) + || (typ == V_ASN1_NULL)) + { + BIO_printf(bio_err, "Can't parse %s type\n", + typ == V_ASN1_NULL ? "NULL" : "OBJECT"); + ERR_print_errors(bio_err); + goto end; + } /* hmm... this is a little evil but it works */ tmpbuf=at->value.asn1_string->data; tmplen=at->value.asn1_string->length; |