From 9dfd8a2d87aa8dc7de8f90c8f00ff51e640e0ec0 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 25 Jul 2025 19:39:57 +0200 Subject: [PATCH] silence gcc 9.2.0 warnings ``` In file included from /Users/runner/work/curl/curl/curl/_x64-linux-musl-bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:472: /Users/runner/work/curl/curl/curl/lib/vquic/curl_ngtcp2.c: In function 'cf_ngtcp2_send': /Users/runner/work/curl/curl/curl/lib/vquic/curl_ngtcp2.c:1511:38: error: potential null pointer dereference [-Werror=null-dereference] 1511 | nva[i].value = (unsigned char *)e->value; | ~^~~~~~~ /Users/runner/work/curl/curl/curl/lib/vquic/curl_ngtcp2.c:1510:23: error: potential null pointer dereference [-Werror=null-dereference] 1510 | nva[i].namelen = e->namelen; | ~^~~~~~~~~ /Users/runner/work/curl/curl/curl/lib/vquic/curl_ngtcp2.c:1509:37: error: potential null pointer dereference [-Werror=null-dereference] 1509 | nva[i].name = (unsigned char *)e->name; | ~^~~~~~ /Users/runner/work/curl/curl/curl/lib/vquic/curl_ngtcp2.c:1512:24: error: potential null pointer dereference [-Werror=null-dereference] 1512 | nva[i].valuelen = e->valuelen; | ~^~~~~~~~~~ ``` https://github.com/curl/curl/actions/runs/16527769182/job/46745369854?pr=18025 --- lib/vquic/curl_msh3.c | 12 ++++++++---- lib/vquic/curl_ngtcp2.c | 14 +++++++++----- lib/vquic/curl_osslq.c | 14 +++++++++----- lib/vquic/curl_quiche.c | 12 ++++++++---- 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/lib/vquic/curl_msh3.c b/lib/vquic/curl_msh3.c index 6566447ba1..fe2a8c0ffe 100644 --- a/lib/vquic/curl_msh3.c +++ b/lib/vquic/curl_msh3.c @@ -642,10 +642,14 @@ static CURLcode cf_msh3_send(struct Curl_cfilter *cf, struct Curl_easy *data, for(i = 0; i < nheader; ++i) { struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].Name = e->name; - nva[i].NameLength = e->namelen; - nva[i].Value = e->value; - nva[i].ValueLength = e->valuelen; + if(e) { + nva[i].Name = e->name; + nva[i].NameLength = e->namelen; + nva[i].Value = e->value; + nva[i].ValueLength = e->valuelen; + } + else + memset(&nva[i], 0, sizeof(*nva)); } CURL_TRC_CF(data, cf, "req: send %zu headers", nheader); diff --git a/lib/vquic/curl_ngtcp2.c b/lib/vquic/curl_ngtcp2.c index 052f280afc..9810a5fa5a 100644 --- a/lib/vquic/curl_ngtcp2.c +++ b/lib/vquic/curl_ngtcp2.c @@ -1506,11 +1506,15 @@ static CURLcode h3_stream_open(struct Curl_cfilter *cf, for(i = 0; i < nheader; ++i) { struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].name = (unsigned char *)e->name; - nva[i].namelen = e->namelen; - nva[i].value = (unsigned char *)e->value; - nva[i].valuelen = e->valuelen; - nva[i].flags = NGHTTP3_NV_FLAG_NONE; + if(e) { + nva[i].name = (unsigned char *)e->name; + nva[i].namelen = e->namelen; + nva[i].value = (unsigned char *)e->value; + nva[i].valuelen = e->valuelen; + nva[i].flags = NGHTTP3_NV_FLAG_NONE; + } + else + memset(&nva[i], 0, sizeof(*nva)); } rc = ngtcp2_conn_open_bidi_stream(ctx->qconn, &sid, data); diff --git a/lib/vquic/curl_osslq.c b/lib/vquic/curl_osslq.c index 4026ffc392..ab7e341053 100644 --- a/lib/vquic/curl_osslq.c +++ b/lib/vquic/curl_osslq.c @@ -1914,11 +1914,15 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf, for(i = 0; i < nheader; ++i) { struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].name = (unsigned char *)e->name; - nva[i].namelen = e->namelen; - nva[i].value = (unsigned char *)e->value; - nva[i].valuelen = e->valuelen; - nva[i].flags = NGHTTP3_NV_FLAG_NONE; + if(e) { + nva[i].name = (unsigned char *)e->name; + nva[i].namelen = e->namelen; + nva[i].value = (unsigned char *)e->value; + nva[i].valuelen = e->valuelen; + nva[i].flags = NGHTTP3_NV_FLAG_NONE; + } + else + memset(&nva[i], 0, sizeof(*nva)); } DEBUGASSERT(stream->s.id == -1); diff --git a/lib/vquic/curl_quiche.c b/lib/vquic/curl_quiche.c index 8a4243469b..51e4897401 100644 --- a/lib/vquic/curl_quiche.c +++ b/lib/vquic/curl_quiche.c @@ -1009,10 +1009,14 @@ static CURLcode h3_open_stream(struct Curl_cfilter *cf, for(i = 0; i < nheader; ++i) { struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].name = (unsigned char *)e->name; - nva[i].name_len = e->namelen; - nva[i].value = (unsigned char *)e->value; - nva[i].value_len = e->valuelen; + if(e) { + nva[i].name = (unsigned char *)e->name; + nva[i].name_len = e->namelen; + nva[i].value = (unsigned char *)e->value; + nva[i].value_len = e->valuelen; + } + else + memset(&nva[i], 0, sizeof(*nva)); } *pnwritten = (size_t)nwritten;