From f26312d31e161173aab5f915f63797629414fe37 Mon Sep 17 00:00:00 2001 From: shatyuka Date: Fri, 17 Apr 2026 14:33:44 +0800 Subject: [PATCH 1/2] Use soname in WPEWebkit availability check --- .../Linux/WpeWebViewAdapter.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs b/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs index 8f96d38..1bf0d33 100644 --- a/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs +++ b/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs @@ -101,14 +101,14 @@ private static bool CheckAvailability() return false; } - if (!NativeLibrary.TryLoad("libWPEWebKit-2.0.so", out var webkitHandle)) + if (!NativeLibrary.TryLoad("libWPEWebKit-2.0.so.1", out var webkitHandle)) return false; - if (!NativeLibrary.TryLoad("libWPEBackend-fdo-1.0.so", out var fdoHandle)) + if (!NativeLibrary.TryLoad("libWPEBackend-fdo-1.0.so.1", out var fdoHandle)) { NativeLibrary.Free(webkitHandle); return false; } - if (!NativeLibrary.TryLoad("libwpe-1.0.so", out var wpeHandle)) + if (!NativeLibrary.TryLoad("libwpe-1.0.so.1", out var wpeHandle)) { NativeLibrary.Free(fdoHandle); NativeLibrary.Free(webkitHandle); From cc45ebf0fa0d012400d76429edca8882fccc6f0c Mon Sep 17 00:00:00 2001 From: shatyuka Date: Fri, 17 Apr 2026 17:37:39 +0800 Subject: [PATCH 2/2] Fix use after free --- .../Linux/WpeWebViewAdapter.cs | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs b/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs index 1bf0d33..076a4f0 100644 --- a/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs +++ b/src/Avalonia.Controls.WebView.Core/Linux/WpeWebViewAdapter.cs @@ -101,23 +101,13 @@ private static bool CheckAvailability() return false; } - if (!NativeLibrary.TryLoad("libWPEWebKit-2.0.so.1", out var webkitHandle)) + if (!NativeLibrary.TryLoad("libWPEWebKit-2.0.so.1", out _)) return false; - if (!NativeLibrary.TryLoad("libWPEBackend-fdo-1.0.so.1", out var fdoHandle)) - { - NativeLibrary.Free(webkitHandle); + if (!NativeLibrary.TryLoad("libWPEBackend-fdo-1.0.so.1", out _)) return false; - } - if (!NativeLibrary.TryLoad("libwpe-1.0.so.1", out var wpeHandle)) - { - NativeLibrary.Free(fdoHandle); - NativeLibrary.Free(webkitHandle); + if (!NativeLibrary.TryLoad("libwpe-1.0.so.1", out _)) return false; - } - NativeLibrary.Free(wpeHandle); - NativeLibrary.Free(fdoHandle); - NativeLibrary.Free(webkitHandle); return true; }