From a03a37b1d9c23f23cf507333afd6676eff0ca8b7 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 28 Jul 2020 11:23:57 +0200 Subject: [PATCH] vfs/lwip: avoid leaking of pbuf objects Issue #3766 --- repos/libports/src/lib/vfs/lwip/vfs.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/repos/libports/src/lib/vfs/lwip/vfs.cc b/repos/libports/src/lib/vfs/lwip/vfs.cc index 7b0e000e36..21e5cb8fa2 100644 --- a/repos/libports/src/lib/vfs/lwip/vfs.cc +++ b/repos/libports/src/lib/vfs/lwip/vfs.cc @@ -1152,9 +1152,16 @@ class Lwip::Tcp_socket_dir final : ~Tcp_socket_dir() { + if (_recv_pbuf) { + pbuf_free(_recv_pbuf); + _recv_pbuf = nullptr; + } + tcp_arg(_pcb, NULL); for (Pcb_pending *p = _pcb_pending.first(); p; p->next()) { + if (p->buf) + pbuf_free(p->buf); destroy(alloc, p); } @@ -1373,6 +1380,7 @@ class Lwip::Tcp_socket_dir final : tcp_backlog_accepted(pp->pcb); _pcb_pending.remove(pp); + pp->buf = nullptr; destroy(alloc, pp); handle.kind = Lwip_file_handle::LOCATION;