diff options
Diffstat (limited to 'lib/asn1_decoder.c')
| -rw-r--r-- | lib/asn1_decoder.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/lib/asn1_decoder.c b/lib/asn1_decoder.c index 3f74dd3e2910..2b3f46c049d4 100644 --- a/lib/asn1_decoder.c +++ b/lib/asn1_decoder.c @@ -24,12 +24,16 @@ static const unsigned char asn1_op_lengths[ASN1_OP__NR] = {  	[ASN1_OP_MATCH_JUMP]			= 1 + 1 + 1,  	[ASN1_OP_MATCH_JUMP_OR_SKIP]		= 1 + 1 + 1,  	[ASN1_OP_MATCH_ANY]			= 1, +	[ASN1_OP_MATCH_ANY_OR_SKIP]		= 1,  	[ASN1_OP_MATCH_ANY_ACT]			= 1         + 1, +	[ASN1_OP_MATCH_ANY_ACT_OR_SKIP]		= 1         + 1,  	[ASN1_OP_COND_MATCH_OR_SKIP]		= 1 + 1,  	[ASN1_OP_COND_MATCH_ACT_OR_SKIP]	= 1 + 1     + 1,  	[ASN1_OP_COND_MATCH_JUMP_OR_SKIP]	= 1 + 1 + 1,  	[ASN1_OP_COND_MATCH_ANY]		= 1, +	[ASN1_OP_COND_MATCH_ANY_OR_SKIP]	= 1,  	[ASN1_OP_COND_MATCH_ANY_ACT]		= 1         + 1, +	[ASN1_OP_COND_MATCH_ANY_ACT_OR_SKIP]	= 1         + 1,  	[ASN1_OP_COND_FAIL]			= 1,  	[ASN1_OP_COMPLETE]			= 1,  	[ASN1_OP_ACT]				= 1         + 1, @@ -304,7 +308,9 @@ next_op:  	/* Decide how to handle the operation */  	switch (op) {  	case ASN1_OP_MATCH_ANY_ACT: +	case ASN1_OP_MATCH_ANY_ACT_OR_SKIP:  	case ASN1_OP_COND_MATCH_ANY_ACT: +	case ASN1_OP_COND_MATCH_ANY_ACT_OR_SKIP:  		ret = actions[machine[pc + 1]](context, hdr, tag, data + dp, len);  		if (ret < 0)  			return ret; @@ -321,8 +327,10 @@ next_op:  	case ASN1_OP_MATCH:  	case ASN1_OP_MATCH_OR_SKIP:  	case ASN1_OP_MATCH_ANY: +	case ASN1_OP_MATCH_ANY_OR_SKIP:  	case ASN1_OP_COND_MATCH_OR_SKIP:  	case ASN1_OP_COND_MATCH_ANY: +	case ASN1_OP_COND_MATCH_ANY_OR_SKIP:  	skip_data:  		if (!(flags & FLAG_CONS)) {  			if (flags & FLAG_INDEFINITE_LENGTH) { | 
