Author: brane Date: Wed Aug 6 07:52:54 2025 New Revision: 1927634 Log: Fix another integer narrowing warning.
* buckets/http2_frame_buckets.c (serf__bucket_http2_frame_create): Change the max_payload_size argument from an apr_uint32_t to an apr_size_t, because that's how we store it in our internal data structures. Move the size check to the beginning of the function so that we can never use a payload size that's too large. * protocols/http2_buckets.h (serf__bucket_http2_frame_create): Update the prototype. Modified: serf/trunk/buckets/http2_frame_buckets.c serf/trunk/protocols/http2_buckets.h Modified: serf/trunk/buckets/http2_frame_buckets.c ============================================================================== --- serf/trunk/buckets/http2_frame_buckets.c Wed Aug 6 07:45:01 2025 (r1927633) +++ serf/trunk/buckets/http2_frame_buckets.c Wed Aug 6 07:52:54 2025 (r1927634) @@ -630,12 +630,17 @@ serf__bucket_http2_frame_create(serf_buc void *baton, apr_int32_t *stream_id), void *stream_id_baton, - apr_uint32_t max_payload_size, + apr_size_t max_payload_size, serf_bucket_alloc_t *alloc) { - serf_http2_frame_context_t *ctx = serf_bucket_mem_alloc(alloc, - sizeof(*ctx)); + serf_http2_frame_context_t *ctx; + /* The upper limit for HTTP/2 MAX_FRAME_SIZE is 16 MiB - 1. + https://www.rfc-editor.org/rfc/rfc9113.html#section-4.2 */ + if (max_payload_size > 0xFFFFFF) + max_payload_size = 0xFFFFFF; + + ctx = serf_bucket_mem_alloc(alloc, sizeof(*ctx)); ctx->alloc = alloc; ctx->stream = stream; ctx->chunk = serf_bucket_aggregate_create(alloc); @@ -643,9 +648,6 @@ serf__bucket_http2_frame_create(serf_buc ctx->frametype = frame_type; ctx->flags = flags; - if (max_payload_size > 0xFFFFFF) - max_payload_size = 0xFFFFFF; - if (!stream_id_alloc || (stream_id && *stream_id >= 0)) { /* Avoid all alloc handling; we know the final id */ @@ -980,4 +982,3 @@ const serf_bucket_type_t serf_bucket_typ serf_http2_frame_get_remaining, serf_http2_frame_set_config }; - Modified: serf/trunk/protocols/http2_buckets.h ============================================================================== --- serf/trunk/protocols/http2_buckets.h Wed Aug 6 07:45:01 2025 (r1927633) +++ serf/trunk/protocols/http2_buckets.h Wed Aug 6 07:52:54 2025 (r1927634) @@ -202,7 +202,7 @@ serf__bucket_http2_frame_create(serf_buc void *baton, apr_int32_t *stream_id), void *stream_id_baton, - apr_uint32_t max_payload_size, + apr_size_t max_payload_size, serf_bucket_alloc_t *alloc); /* ==================================================================== */