diff options
author | Vladimir Homutov <vl@nginx.com> | 2020-10-07 10:14:02 +0300 |
---|---|---|
committer | Vladimir Homutov <vl@nginx.com> | 2020-10-07 10:14:02 +0300 |
commit | 7250a7688da4ee9ad1a88fd1489bbb19ec2020ce (patch) | |
tree | 3e6bba77286c52940986efce992326d2653bf497 /src | |
parent | 46a01acdc0ba98014bcd282628453f59954f9a3a (diff) | |
download | nginx-7250a7688da4ee9ad1a88fd1489bbb19ec2020ce.tar.gz nginx-7250a7688da4ee9ad1a88fd1489bbb19ec2020ce.zip |
QUIC: fixed memory leak in ngx_quic_send_frames().
The function did not free passed frames in case of error.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_quic.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index c6a249b42..aff89b01d 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -3839,6 +3839,7 @@ ngx_quic_send_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx, len = ngx_quic_create_frame(p, f); if (len == -1) { + ngx_quic_free_frames(c, frames); return NGX_ERROR; } @@ -3897,11 +3898,13 @@ ngx_quic_send_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx, pkt.num_len, pkt.trunc); if (ngx_quic_encrypt(&pkt, ssl_conn, &res) != NGX_OK) { + ngx_quic_free_frames(c, frames); return NGX_ERROR; } len = c->send(c, res.data, res.len); if (len == NGX_ERROR || (size_t) len != res.len) { + ngx_quic_free_frames(c, frames); return NGX_ERROR; } |