mirror of
https://github.com/openssl/openssl.git
synced 2026-05-07 20:12:39 +00:00
The tag value must fit into int
We cannot allow an unbounded tag value as this is an O(n^2) algorithm
and the tag cannot be larger than INT_MAX anyway.
Fixes 35852da1d9
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Simo Sorce <simo@redhat.com>
MergeDate: Thu May 7 12:21:26 2026
(Merged from https://github.com/openssl/openssl/pull/31091)
This commit is contained in:
@@ -167,8 +167,15 @@ int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
|
||||
|
||||
diff--;
|
||||
if ((*(q++) & V_ASN1_PRIMITIVE_TAG) == V_ASN1_PRIMITIVE_TAG) {
|
||||
unsigned int i = 0;
|
||||
/* Multi-byte tag. See if we have the whole thing yet */
|
||||
do {
|
||||
if (i > 4) {
|
||||
/* The tag value must fit into int */
|
||||
ERR_raise(ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG);
|
||||
goto err;
|
||||
}
|
||||
++i;
|
||||
diff--;
|
||||
} while (diff > 0 && *(q++) & 0x80);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user