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 <od...@rsg.ci.i.u-tokyo.ac.jp>
---
Changes in v3:
- Rebased.
- Reordered the patches.
- Removed the extra allocation of VncWorker.
- Removed the worker field from VncState.
- Dropped the Reviewed-by tags.
- Link to v2: 
https://lore.kernel.org/qemu-devel/20250531-zlib-v2-0-b75c4b476...@rsg.ci.i.u-tokyo.ac.jp

Changes in v2:
- Rebased.
- Link to v1: 
https://lore.kernel.org/qemu-devel/20250417-zlib-v1-0-34fad73b8...@daynix.com

---
Akihiko Odaki (2):
      ui/vnc: Do not copy z_stream
      ui/vnc: Introduce the VncWorker type

 ui/vnc.h              |  49 ++++--
 ui/vnc-enc-tight.c    | 456 ++++++++++++++++++++++++++------------------------
 ui/vnc-enc-zlib.c     |  47 +++---
 ui/vnc-enc-zrle.c     | 122 +++++++-------
 ui/vnc-jobs.c         |  13 +-
 ui/vnc.c              |  83 ++++-----
 ui/vnc-enc-zrle.c.inc |  20 +--
 7 files changed, 407 insertions(+), 383 deletions(-)
---
base-commit: 6322b753f798337835e205b6d805356bea582c86
change-id: 20250417-zlib-ce3034f8bc3c

Best regards,
-- 
Akihiko Odaki <od...@rsg.ci.i.u-tokyo.ac.jp>


Reply via email to