From ac10768495837eb98da27d01fe706073d6d251c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Thu, 17 Jul 2025 13:07:52 +0200 Subject: [PATCH] Wayland: Fix memory leaks in data offer reading The buffer storing the contents of the data offer being read could leak if buffer reallocation or reading from the pipe failed. --- README.md | 1 + src/wl_window.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index e7ad5a0c..c453739d 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,7 @@ information on what to include when reporting a bug. - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault - [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727) - [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727) + - [Wayland] Bugfix: Memory would leak if reading a data offer failed midway - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` diff --git a/src/wl_window.c b/src/wl_window.c index 01650182..def3b870 100644 --- a/src/wl_window.c +++ b/src/wl_window.c @@ -1333,6 +1333,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime if (!longer) { _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + _glfw_free(string); close(fds[0]); return NULL; } @@ -1352,6 +1353,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime _glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: Failed to read from data offer pipe: %s", strerror(errno)); + _glfw_free(string); close(fds[0]); return NULL; }