diff --git a/RenderFrameHostImpl-use-after-free.patch b/RenderFrameHostImpl-use-after-free.patch new file mode 100644 index 0000000..8bc6e5a --- /dev/null +++ b/RenderFrameHostImpl-use-after-free.patch @@ -0,0 +1,24 @@ +--- src/content/browser/renderer_host/render_frame_host_impl.cc.orig 2023-02-08 21:38:09.974003318 +0100 ++++ src/content/browser/renderer_host/render_frame_host_impl.cc 2023-02-13 14:13:50.217792624 +0100 +@@ -5,6 +5,7 @@ + #include "content/browser/renderer_host/render_frame_host_impl.h" + + #include ++#include + #include + #include + #include +@@ -1876,7 +1877,12 @@ + // completes. Among other things, this ensures that any `SafeRef`s from + // `DocumentService` and `RenderFrameHostUserData` subclasses are still valid + // when their destructors run. +- document_associated_data_.reset(); ++ // HACK: Using .reset() here works on MSVC and LLVM libc++ because the std::optional ++ // is still valid while the destructor runs. This does not work on GNU libstdc++ ++ // however which invalidates the optional before calling the destructor, causing a crash. ++ // Upstream bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1415154 ++ document_associated_data_->~DocumentAssociatedData(); ++ new(&document_associated_data_) absl::optional(absl::nullopt); + + // Ensure that the render process host has been notified that all audio + // streams from this frame have terminated. This is required to ensure the diff --git a/electron-16-system-node-headers.patch b/electron-16-system-node-headers.patch index ed17b3a..1032bce 100644 --- a/electron-16-system-node-headers.patch +++ b/electron-16-system-node-headers.patch @@ -8,7 +8,7 @@ Index: electron-17.1.0/third_party/electron_node/common.gypi }], + [ 'OS in "linux"', { + 'cflags': [ '-I/usr/include/electron' ], -+ 'ldflags': [ '-lz' ], ++ 'ldflags': [ '-Wl,--as-needed', '-lz' ], + }], [ 'OS in "linux freebsd openbsd solaris aix"', { 'cflags': [ '-pthread' ], diff --git a/nodejs-electron.changes b/nodejs-electron.changes index 93edf7d..e407c06 100644 --- a/nodejs-electron.changes +++ b/nodejs-electron.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Feb 13 13:19:38 UTC 2023 - Bruno Pitrus +- Add RenderFrameHostImpl-use-after-free.patch to fix a crash reported by an user. +- Fix unnecessary libz dependency added for downstream node modules on Fedora. + ------------------------------------------------------------------- Wed Feb 8 21:17:12 UTC 2023 - Bruno Pitrus - New upstream release 22.2.1 diff --git a/nodejs-electron.spec b/nodejs-electron.spec index 10b859f..7085837 100644 --- a/nodejs-electron.spec +++ b/nodejs-electron.spec @@ -307,6 +307,7 @@ Patch2033: node-upgrade-llhttp-to-8.patch Source2033: node-upgrade-llhttp-to-8.patch %endif Patch2034: swiftshader-LLVMJIT-AddressSanitizerPass-dead-code-remove.patch +Patch2035: RenderFrameHostImpl-use-after-free.patch # PATCHES that should be submitted upstream verbatim or near-verbatim Patch3016: chromium-98-EnumTable-crash.patch