diff --git a/library/asn1parse.c b/library/asn1parse.c index 9d42f05916..ff566c9ce6 100644 --- a/library/asn1parse.c +++ b/library/asn1parse.c @@ -292,8 +292,11 @@ int asn1_get_alg( unsigned char **p, ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 ) return( ret ); - end = *p + len; + if( ( end - *p ) < 1 ) + return( POLARSSL_ERR_ASN1_OUT_OF_DATA ); + alg->tag = **p; + end = *p + len; if( ( ret = asn1_get_tag( p, end, &alg->len, ASN1_OID ) ) != 0 ) return( ret );