Description
FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_cliprdr_provide_data_` passes freed `pDstData` to `XChangeProperty` because the cliprdr channel thread calls `xf_cliprdr_server_format_data_response` which converts and uses the clipboard data without holding any lock, while the X11 event thread concurrently calls `xf_cliprdr_clear_cached_data` → `HashTable_Clear` which frees the same data via `xf_cached_data_free`, triggering a heap use after free. Version 3.23.0 fixes the issue.
Problem types
Product status
References
github.com/...reeRDP/security/advisories/GHSA-78xg-v4p2-4w3c
github.com/...reeRDP/security/advisories/GHSA-78xg-v4p2-4w3c
github.com/...ommit/d3e8b3b9365be96a4f11dda149d71b3287227d0a
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c
github.com/...806c2a5c583ca39dd9ef1e/client/X11/xf_cliprdr.c