mirror of
https://github.com/openssl/openssl.git
synced 2025-03-01 19:28:10 +08:00
Print out bad content octets.
If asn1parse doesn't like a structure print out the content octets for diagnostic purposes. Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
e3e6a72ec8
commit
2ab7af7b08
@ -124,7 +124,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
||||
ASN1_OBJECT *o = NULL;
|
||||
ASN1_OCTET_STRING *os = NULL;
|
||||
/* ASN1_BMPSTRING *bmp=NULL; */
|
||||
int dump_indent;
|
||||
int dump_indent, dump_cont = 0;
|
||||
|
||||
if (depth > ASN1_PARSE_MAXDEPTH) {
|
||||
BIO_puts(bp, "BAD RECURSION DEPTH\n");
|
||||
@ -221,11 +221,13 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
||||
} else {
|
||||
if (BIO_write(bp, ":BAD OBJECT", 11) <= 0)
|
||||
goto end;
|
||||
dump_cont = 1;
|
||||
}
|
||||
} else if (tag == V_ASN1_BOOLEAN) {
|
||||
if (len != 1) {
|
||||
if (BIO_write(bp, "Bad boolean\n", 12) <= 0)
|
||||
if (BIO_puts(bp, "BAD BOOLEAN") <= 0)
|
||||
goto end;
|
||||
dump_cont = 1;
|
||||
}
|
||||
BIO_printf(bp, ":%u", p[0]);
|
||||
} else if (tag == V_ASN1_BMPSTRING) {
|
||||
@ -309,6 +311,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
||||
} else {
|
||||
if (BIO_write(bp, "BAD INTEGER", 11) <= 0)
|
||||
goto end;
|
||||
dump_cont = 1;
|
||||
}
|
||||
ASN1_INTEGER_free(bs);
|
||||
} else if (tag == V_ASN1_ENUMERATED) {
|
||||
@ -334,6 +337,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
||||
} else {
|
||||
if (BIO_write(bp, "BAD ENUMERATED", 14) <= 0)
|
||||
goto end;
|
||||
dump_cont = 1;
|
||||
}
|
||||
ASN1_ENUMERATED_free(bs);
|
||||
} else if (len > 0 && dump) {
|
||||
@ -347,6 +351,18 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
||||
goto end;
|
||||
nl = 1;
|
||||
}
|
||||
if (dump_cont) {
|
||||
int i;
|
||||
const unsigned char *tmp = op + hl;
|
||||
if (BIO_puts(bp, ":[") <= 0)
|
||||
goto end;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (BIO_printf(bp, "%02X", tmp[i]) <= 0)
|
||||
goto end;
|
||||
}
|
||||
if (BIO_puts(bp, "]") <= 0)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!nl) {
|
||||
if (BIO_write(bp, "\n", 1) <= 0)
|
||||
|
Loading…
Reference in New Issue
Block a user