diff options
author | Phil Sutter <phil@nwl.cc> | 2021-03-10 16:56:11 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2021-11-30 14:57:46 +0100 |
commit | a4cd80fc44d6289239a6c89b20f9eb89680ce958 (patch) | |
tree | 04f872ee26f544ab2b3ed0147b19d7b14a5cd40e /src/ct.c | |
parent | 00c35de933e95385acbe7fdc8aaab5a697f734a5 (diff) |
ct: Fix ct label value parser
Size of array to export the bit value into was eight times too large, so
on Big Endian the data written into the data reg was always zero.
Fixes: 2fcce8b0677b3 ("ct: connlabel matching support")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'src/ct.c')
-rw-r--r-- | src/ct.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -176,7 +176,7 @@ static struct error_record *ct_label_type_parse(struct parse_ctx *ctx, { const struct symbolic_constant *s; const struct datatype *dtype; - uint8_t data[CT_LABEL_BIT_SIZE]; + uint8_t data[CT_LABEL_BIT_SIZE / BITS_PER_BYTE]; uint64_t bit; mpz_t value; @@ -211,8 +211,7 @@ static struct error_record *ct_label_type_parse(struct parse_ctx *ctx, mpz_export_data(data, value, BYTEORDER_HOST_ENDIAN, sizeof(data)); *res = constant_expr_alloc(&sym->location, dtype, - dtype->byteorder, sizeof(data), - data); + dtype->byteorder, CT_LABEL_BIT_SIZE, data); mpz_clear(value); return NULL; } |