]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib/util/asn1: avoid technically undefined shift
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 6 Aug 2020 05:10:30 +0000 (17:10 +1200)
committerJeremy Allison <jra@samba.org>
Mon, 31 Aug 2020 21:06:29 +0000 (21:06 +0000)
UBSAN says

 runtime error: left shift of 255 by 24 places cannot be represented in type 'int'

Credit to OSS-Fuzz.

REF: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22889

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
lib/util/asn1.c

index 0dfddc009c037300212670cfd7f8d04599b912c9..6b1b4bc2877fe9fcb6609b55b5a8b953897b4318 100644 (file)
@@ -1052,7 +1052,7 @@ bool asn1_read_BitString(struct asn1_data *data, TALLOC_CTX *mem_ctx, DATA_BLOB
 /* read a non-negative enumerated value */
 bool asn1_read_enumerated(struct asn1_data *data, int *v)
 {
-       unsigned int val_will_wrap = (0xFF << ((sizeof(int)*8)-8));
+       unsigned int val_will_wrap = (0xFFU << ((sizeof(int)*8)-8));
        *v = 0;
 
        if (!asn1_start_tag(data, ASN1_ENUMERATED)) return false;