Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
}
taglen = b;
while (n > 1) {
+ size_t tmp_taglen;
+
if (!asn1_read_uint8(data, &b)) {
data->ofs = start_ofs;
data->has_error = false;
return false;
}
- taglen = (taglen << 8) | b;
+
+ tmp_taglen = (taglen << 8) | b;
+
+ if ((tmp_taglen >> 8) != taglen) {
+ /* overflow */
+ data->ofs = start_ofs;
+ data->has_error = false;
+ return false;
+ }
+ taglen = tmp_taglen;
+
n--;
}
} else {