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;