Skip to content

Commit fac1e57

Browse files
bergzandthiagomacieira
authored andcommitted
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 <[email protected]>
1 parent 81fbe2e commit fac1e57

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

src/cborvalidation.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -241,27 +241,27 @@
241241

242242
struct KnownTagData { uint32_t tag; uint32_t types; };
243243
static const struct KnownTagData knownTagData[] = {
244-
{ 0, (uint8_t)CborTextStringType },
245-
{ 1, (uint8_t)(CborIntegerType+1) },
246-
{ 2, (uint8_t)CborByteStringType },
247-
{ 3, (uint8_t)CborByteStringType },
248-
{ 4, (uint8_t)CborArrayType },
249-
{ 5, (uint8_t)CborArrayType },
250-
{ 16, (uint8_t)CborArrayType },
251-
{ 17, (uint8_t)CborArrayType },
252-
{ 18, (uint8_t)CborArrayType },
253-
{ 21, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
254-
{ 22, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
255-
{ 23, (uint8_t)CborByteStringType | ((uint8_t)CborArrayType << 8) | ((uint8_t)CborMapType << 16) },
256-
{ 24, (uint8_t)CborByteStringType },
257-
{ 32, (uint8_t)CborTextStringType },
258-
{ 33, (uint8_t)CborTextStringType },
259-
{ 34, (uint8_t)CborTextStringType },
260-
{ 35, (uint8_t)CborTextStringType },
261-
{ 36, (uint8_t)CborTextStringType },
262-
{ 96, (uint8_t)CborArrayType },
263-
{ 97, (uint8_t)CborArrayType },
264-
{ 98, (uint8_t)CborArrayType },
244+
{ 0, (uint32_t)CborTextStringType },
245+
{ 1, (uint32_t)(CborIntegerType+1) },
246+
{ 2, (uint32_t)CborByteStringType },
247+
{ 3, (uint32_t)CborByteStringType },
248+
{ 4, (uint32_t)CborArrayType },
249+
{ 5, (uint32_t)CborArrayType },
250+
{ 16, (uint32_t)CborArrayType },
251+
{ 17, (uint32_t)CborArrayType },
252+
{ 18, (uint32_t)CborArrayType },
253+
{ 21, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
254+
{ 22, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
255+
{ 23, (uint32_t)CborByteStringType | ((uint32_t)CborArrayType << 8) | ((uint32_t)CborMapType << 16) },
256+
{ 24, (uint32_t)CborByteStringType },
257+
{ 32, (uint32_t)CborTextStringType },
258+
{ 33, (uint32_t)CborTextStringType },
259+
{ 34, (uint32_t)CborTextStringType },
260+
{ 35, (uint32_t)CborTextStringType },
261+
{ 36, (uint32_t)CborTextStringType },
262+
{ 96, (uint32_t)CborArrayType },
263+
{ 97, (uint32_t)CborArrayType },
264+
{ 98, (uint32_t)CborArrayType },
265265
{ 55799, 0U }
266266
};
267267

src/parsetags.pl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@
104104
my $actualtype = "Cbor${type}Type";
105105
$actualtype = "($actualtype+1)" if $type eq "Integer";
106106
$typemask .= " | " if $typemask ne "";
107-
$typemask .= "((uint8_t)$actualtype << $shift)" if $shift;
108-
$typemask .= "(uint8_t)$actualtype" unless $shift;
107+
$typemask .= "((uint32_t)$actualtype << $shift)" if $shift;
108+
$typemask .= "(uint32_t)$actualtype" unless $shift;
109109
$shift += 8;
110110
}
111111
$typemask = "0U" if $typemask eq "";

0 commit comments

Comments
 (0)