From 343e851e6ef9c51d071b78d2f7abced4ad589785 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Mon, 17 Feb 2020 10:02:17 +0000 Subject: [PATCH] Force the single-process mode in Evolution and Geary Bug: https://bugs.webkit.org/show_bug.cgi?id=201033 Origin: https://mail.gnome.org/archives/distributor-list/2019-October/msg00000.html Since WebKitGTK 2.26 the single-process mode is considered a security risk and the process limiting APIs have been completely disabled. This change is transparent for most applications, but Geary and particularly Evolution (see upstream bug #587) are known to have problems in multi-process mode. This has already been fixed in Geary 3.33.91 and in Evolution 3.34.1. Although the API to set the single-process model is no longer available, it is still possible to do it internally. This patch does that for Evolution and Geary. This is a temporary workaround and it is especially meant for stable distributions and security updates, where patching or updating the affected apps is not an option. =================================================================== Gbp-Pq: Name force-single-process.patch --- .../WebKit/UIProcess/API/glib/WebKitWebContext.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp index ae9e61383f..9f06a9752d 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -348,8 +348,16 @@ ALLOW_DEPRECATED_DECLARATIONS_END configuration.setLocalStorageDirectory(FileSystem::stringFromFileSystemRepresentation(priv->localStorageDirectory.data())); const char* useSingleWebProcess = getenv("WEBKIT_USE_SINGLE_WEB_PROCESS"); - if (useSingleWebProcess && strcmp(useSingleWebProcess, "0")) - configuration.setUsesSingleWebProcess(true); + if (useSingleWebProcess) { + if (strcmp(useSingleWebProcess, "0")) { + configuration.setUsesSingleWebProcess(true); + } + } else { + const char* prgname = g_get_prgname(); + if (!g_strcmp0(prgname, "evolution") || !g_strcmp0(prgname, "geary")) { + configuration.setUsesSingleWebProcess(true); + } + } priv->processPool = WebProcessPool::create(configuration); if (!priv->websiteDataManager) -- 2.30.2