return 0;
delay = ossl_time_divide(ossl_time_divide(ack->delay_time, OSSL_TIME_US),
- 1UL << ack_delay_exponent);
+ (uint64_t)1 << ack_delay_exponent);
ack_delay_enc = ossl_time2ticks(delay);
largest_ackd = ack->ack_ranges[0].end;
unsigned char *p = NULL;
if (!ossl_quic_wire_encode_frame_crypto_hdr(pkt, f)
- || !WPACKET_allocate_bytes(pkt, f->len, &p))
+ || f->len > SIZE_MAX /* sizeof(uint64_t) > sizeof(size_t)? */
+ || !WPACKET_allocate_bytes(pkt, (size_t)f->len, &p))
return NULL;
if (f->data != NULL)
- memcpy(p, f->data, f->len);
+ memcpy(p, f->data, (size_t)f->len);
return p;
}
unsigned char *p = NULL;
- if (!ossl_quic_wire_encode_frame_stream_hdr(pkt, f))
+ if (!ossl_quic_wire_encode_frame_stream_hdr(pkt, f)
+ || f->len > SIZE_MAX /* sizeof(uint64_t) > sizeof(size_t)? */)
return NULL;
- if (!WPACKET_allocate_bytes(pkt, f->len, &p))
+ if (!WPACKET_allocate_bytes(pkt, (size_t)f->len, &p))
return NULL;
if (f->data != NULL)
- memcpy(p, f->data, f->len);
+ memcpy(p, f->data, (size_t)f->len);
return p;
}
ack->delay_time
= ossl_time_multiply(ossl_ticks2time(OSSL_TIME_US),
safe_mul_uint64_t(ack_delay_raw,
- 1UL << ack_delay_exponent,
+ (uint64_t)1 << ack_delay_exponent,
&err));
if (err)
ack->delay_time = ossl_time_infinite();
{
if (!expect_frame_header(pkt, OSSL_QUIC_FRAME_TYPE_CRYPTO)
|| !PACKET_get_quic_vlint(pkt, &f->offset)
- || !PACKET_get_quic_vlint(pkt, &f->len))
+ || !PACKET_get_quic_vlint(pkt, &f->len)
+ || f->len > SIZE_MAX /* sizeof(uint64_t) > sizeof(size_t)? */)
return 0;
if (PACKET_remaining(pkt) < f->len)
f->data = PACKET_data(pkt);
- if (!PACKET_forward(pkt, f->len))
+ if (!PACKET_forward(pkt, (size_t)f->len))
return 0;
return 1;
return 0;
*token = PACKET_data(pkt);
- *token_len = token_len_;
+ *token_len = (size_t)token_len_;
- if (!PACKET_forward(pkt, token_len_))
+ if (!PACKET_forward(pkt, (size_t)token_len_))
return 0;
return 1;
f->data = PACKET_data(pkt);
- if (!PACKET_forward(pkt, f->len))
+ if (f->len > SIZE_MAX /* sizeof(uint64_t) > sizeof(size_t)? */
+ || !PACKET_forward(pkt, (size_t)f->len))
return 0;
return 1;
|| reason_len > SIZE_MAX)
return 0;
- if (!PACKET_get_bytes(pkt, (const unsigned char **)&f->reason, reason_len))
+ if (!PACKET_get_bytes(pkt, (const unsigned char **)&f->reason,
+ (size_t)reason_len))
return 0;
- f->reason_len = reason_len;
+ f->reason_len = (size_t)reason_len;
return 1;
}
if (!PACKET_copy_bytes(pkt, hdr->dst_conn_id.id, short_conn_id_len))
return 0;
- hdr->dst_conn_id.id_len = short_conn_id_len;
+ hdr->dst_conn_id.id_len = (unsigned char)short_conn_id_len;
/*
* Skip over the PN. If this is a partial decode, the PN length field
if (!PACKET_get_quic_vlint(pkt, &token_len)
|| token_len > SIZE_MAX
- || !PACKET_get_bytes(pkt, &hdr->token, token_len))
+ || !PACKET_get_bytes(pkt, &hdr->token, (size_t)token_len))
return 0;
hdr->token_len = (size_t)token_len;
if (buf_len < QUIC_MIN_VALID_PKT_LEN_CRYPTO + short_conn_id_len)
return 0;
- dst_conn_id->id_len = short_conn_id_len;
+ dst_conn_id->id_len = (unsigned char)short_conn_id_len;
memcpy(dst_conn_id->id, buf + 1, short_conn_id_len);
return 1;
}
if (!TEST_uint64_t_eq(total_ranges, peek_total_ranges))
return 0;
- if (!TEST_mem_eq(f.ack_ranges, f.num_ack_ranges * sizeof(OSSL_QUIC_ACK_RANGE),
+ if (!TEST_uint64_t_le(f.num_ack_ranges * sizeof(OSSL_QUIC_ACK_RANGE),
+ SIZE_MAX)
+ || !TEST_uint64_t_le(encode_case_3_f.num_ack_ranges
+ * sizeof(OSSL_QUIC_ACK_RANGE),
+ SIZE_MAX))
+ return 0;
+
+ if (!TEST_mem_eq(f.ack_ranges,
+ (size_t)f.num_ack_ranges * sizeof(OSSL_QUIC_ACK_RANGE),
encode_case_3_f.ack_ranges,
- encode_case_3_f.num_ack_ranges * sizeof(OSSL_QUIC_ACK_RANGE)))
+ (size_t)encode_case_3_f.num_ack_ranges * sizeof(OSSL_QUIC_ACK_RANGE)))
return 0;
if (!TEST_uint64_t_eq(ossl_time2ticks(f.delay_time),
if (!TEST_uint64_t_eq(f.offset, 0x1234))
return 0;
- if (!TEST_mem_eq(f.data, f.len, encode_case_6_data, sizeof(encode_case_6_data)))
+ if (!TEST_uint64_t_le(f.len, SIZE_MAX))
+ return 0;
+
+ if (!TEST_mem_eq(f.data, (size_t)f.len,
+ encode_case_6_data, sizeof(encode_case_6_data)))
return 0;
return 1;
if (fail >= 0)
return 1;
- if (!TEST_mem_eq(f.data, f.len,
+ if (!TEST_uint64_t_le(f.len, SIZE_MAX))
+ return 0;
+
+ if (!TEST_mem_eq(f.data, (size_t)f.len,
encode_case_8_data, sizeof(encode_case_8_data)))
return 0;
if (fail >= 0)
return 1;
- if (!TEST_mem_eq(f.data, f.len,
+ if (!TEST_uint64_t_le(f.len, SIZE_MAX))
+ return 0;
+
+ if (!TEST_mem_eq(f.data, (size_t)f.len,
encode_case_9_data, sizeof(encode_case_9_data)))
return 0;