vnc_worker_thread_loop() copies z_stream stored in its local VncState to
the persistent VncState, and the copied one is freed with deflateEnd()
later. However, deflateEnd() refuses to operate with a copied z_stream
and returns Z_STREAM_ERROR, leaking the allocated memory.
Avoid copying the zlib state to fix the memory leak.
Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
---
Changes in v2:
- Rebased.
- Link to v1: https://lore.kernel.org/qemu-devel/20250417-zlib-v1-0-34fad73b843b@daynix.com
---
Akihiko Odaki (2):
ui/vnc: Introduce the VncWorker type
ui/vnc: Do not copy z_stream
ui/vnc.h | 14 ++-
ui/vnc-enc-tight.c | 341 ++++++++++++++++++++++++++------------------------
ui/vnc-enc-zlib.c | 34 ++---
ui/vnc-enc-zrle.c | 69 +++++-----
ui/vnc-jobs.c | 9 +-
ui/vnc.c | 56 ++++-----
ui/vnc-enc-zrle.c.inc | 2 +-
7 files changed, 258 insertions(+), 267 deletions(-)
---
base-commit: f0737158b483e7ec2b2512145aeab888b85cc1f7
change-id: 20250417-zlib-ce3034f8bc3c
Can you rebase again? thanks