The expression items[JWE_ELT_JOSE].length << 3 performs the shift on an
unsigned int (32-bit) before being cast to uint64_t instead of after.
This means that we don't cover for a possible overflow (which would
never happen as it would need a header length beyond 512MB). At least
fixing it will avoid code check reports.
int retval = 1;
const EVP_MD *hash = NULL;
int mac_key_len = 0;
- uint64_t aad_len = my_htonll(items[JWE_ELT_JOSE].length << 3);
+ uint64_t aad_len = my_htonll((uint64_t)items[JWE_ELT_JOSE].length << 3);
struct buffer *tag_data = alloc_trash_chunk();
struct buffer *hmac = alloc_trash_chunk();