validation: Fix tag array for 8 bit architectures
Compilation for 8 bit architectures fails due to a bit shift larger than
8 for a uint8_t data type. This commit changes the data type to uint32_t
for the tag array.
Signed-off-by: Koen Zandberg <koen@bergzand.net>
diff --git a/src/cborvalidation.c b/src/cborvalidation.c
index a1a7e08..00693d6 100644
--- a/src/cborvalidation.c
+++ b/src/cborvalidation.c
@@ -241,27 +241,27 @@
struct KnownTagData { uint32_t tag; uint32_t types; };
static const struct KnownTagData knownTagData[] = {
- { 0, (uint8_t)CborTextStringType },
- { 1, (uint8_t)(CborIntegerType+1) },
- { 2, (uint8_t)CborByteStringType },
- { 3, (uint8_t)CborByteStringType },
- { 4, (uint8_t)CborArrayType },
- { 5, (uint8_t)CborArrayType },
- { 16, (uint8_t)CborArrayType },
- { 17, (uint8_t)CborArrayType },
- { 18, (uint8_t)CborArrayType },
- { 21, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
- { 22, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
- { 23, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
- { 24, (uint8_t)CborByteStringType },
- { 32, (uint8_t)CborTextStringType },
- { 33, (uint8_t)CborTextStringType },
- { 34, (uint8_t)CborTextStringType },
- { 35, (uint8_t)CborTextStringType },
- { 36, (uint8_t)CborTextStringType },
- { 96, (uint8_t)CborArrayType },
- { 97, (uint8_t)CborArrayType },
- { 98, (uint8_t)CborArrayType },
+ { 0, (uint32_t)CborTextStringType },
+ { 1, (uint32_t)(CborIntegerType+1) },
+ { 2, (uint32_t)CborByteStringType },
+ { 3, (uint32_t)CborByteStringType },
+ { 4, (uint32_t)CborArrayType },
+ { 5, (uint32_t)CborArrayType },
+ { 16, (uint32_t)CborArrayType },
+ { 17, (uint32_t)CborArrayType },
+ { 18, (uint32_t)CborArrayType },
+ { 21, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
+ { 22, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
+ { 23, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
+ { 24, (uint32_t)CborByteStringType },
+ { 32, (uint32_t)CborTextStringType },
+ { 33, (uint32_t)CborTextStringType },
+ { 34, (uint32_t)CborTextStringType },
+ { 35, (uint32_t)CborTextStringType },
+ { 36, (uint32_t)CborTextStringType },
+ { 96, (uint32_t)CborArrayType },
+ { 97, (uint32_t)CborArrayType },
+ { 98, (uint32_t)CborArrayType },
{ 55799, 0U }
};
diff --git a/src/parsetags.pl b/src/parsetags.pl
index 18be146..fbb1829 100755
--- a/src/parsetags.pl
+++ b/src/parsetags.pl
@@ -104,8 +104,8 @@
my $actualtype = "Cbor${type}Type";
$actualtype = "($actualtype+1)" if $type eq "Integer";
$typemask .= " | " if $typemask ne "";
- $typemask .= "((uint8_t)$actualtype << $shift)" if $shift;
- $typemask .= "(uint8_t)$actualtype" unless $shift;
+ $typemask .= "((uint32_t)$actualtype << $shift)" if $shift;
+ $typemask .= "(uint32_t)$actualtype" unless $shift;
$shift += 8;
}
$typemask = "0U" if $typemask eq "";