From 17f4b88d0181e26715a18fea2918d1c5102c8f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Schr=C3=B6ter?= Date: Thu, 10 Oct 2024 10:56:11 +0200 Subject: [PATCH] tor-browser: 13.5.7 -> 14.0 https://blog.torproject.org/new-release-tor-browser-140/ Add --no-clobber-old-sections to patchelf to fix segfault. Also switches from manual patchelf usage to autoPatchelf to make this fix work for all binaries. Fixups for obfs & snowflake were removed, as they are no longer required. --- pkgs/by-name/to/tor-browser/package.nix | 34 +++++++++++-------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/pkgs/by-name/to/tor-browser/package.nix b/pkgs/by-name/to/tor-browser/package.nix index f84198772eeb..e0d96106f792 100644 --- a/pkgs/by-name/to/tor-browser/package.nix +++ b/pkgs/by-name/to/tor-browser/package.nix @@ -6,6 +6,7 @@ , makeWrapper , writeText , autoPatchelfHook +, patchelfUnstable # have to use patchelfUnstable to support --no-clobber-old-sections , wrapGAppsHook3 , callPackage @@ -101,7 +102,7 @@ lib.warnIf (useHardenedMalloc != null) ++ lib.optionals mediaSupport [ ffmpeg ] ); - version = "13.5.7"; + version = "14.0"; sources = { x86_64-linux = fetchurl { @@ -111,7 +112,7 @@ lib.warnIf (useHardenedMalloc != null) "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz" "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz" ]; - hash = "sha256-w+W3J07+7/DERDsX0EubHKZfCr9Bc3dKmnS33UA3sdU="; + hash = "sha256-RNsTj8/HP10ElIjutYCqp50gN7W7Kz+DA94rkkU/VaI="; }; i686-linux = fetchurl { @@ -121,7 +122,7 @@ lib.warnIf (useHardenedMalloc != null) "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz" "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz" ]; - hash = "sha256-GZ6tBxnX3Y4Ot71phDYkpiWDecr3AltuAVFWSNhX3CY="; + hash = "sha256-rHInikR2UvsB8A0cC7gqj09CWajJtR9ZhS3WFrv2z94="; }; }; @@ -144,7 +145,13 @@ stdenv.mkDerivation rec { src = sources.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}"); - nativeBuildInputs = [ autoPatchelfHook copyDesktopItems makeWrapper wrapGAppsHook3 ]; + nativeBuildInputs = [ + autoPatchelfHook + patchelfUnstable + copyDesktopItems + makeWrapper + wrapGAppsHook3 + ]; buildInputs = [ gtk3 alsa-lib @@ -152,6 +159,9 @@ stdenv.mkDerivation rec { libXtst ]; + # Firefox uses "relrhack" to manually process relocations from a fixed offset + patchelfFlags = [ "--no-clobber-old-sections" ]; + preferLocalBuild = true; allowSubstitutes = false; @@ -178,7 +188,6 @@ stdenv.mkDerivation rec { # For convenience ... TBB_IN_STORE=$out/share/tor-browser - interp=$(< $NIX_CC/nix-support/dynamic-linker) # Unpack & enter mkdir -p "$TBB_IN_STORE" @@ -186,10 +195,7 @@ stdenv.mkDerivation rec { pushd "$TBB_IN_STORE" # Set ELF interpreter - for exe in firefox.real TorBrowser/Tor/tor ; do - echo "Setting ELF interpreter on $exe ..." >&2 - patchelf --set-interpreter "$interp" "$exe" - done + autoPatchelf firefox.real TorBrowser/Tor # firefox is a wrapper that checks for a more recent libstdc++ & appends it to the ld path mv firefox.real firefox @@ -210,16 +216,6 @@ stdenv.mkDerivation rec { substituteInPlace TorBrowser/Data/Tor/torrc-defaults \ --replace-fail './TorBrowser' "$TBB_IN_STORE/TorBrowser" - # Fixup obfs transport. Work around patchelf failing to set - # interpreter for pre-compiled Go binaries by invoking the interpreter - # directly. - sed -i TorBrowser/Data/Tor/torrc-defaults \ - -e "s|\(ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit\) exec|\1 exec $interp|" - - # Similarly fixup snowflake - sed -i TorBrowser/Data/Tor/torrc-defaults \ - -e "s|\(ClientTransportPlugin snowflake\) exec|\1 exec $interp|" - # Prepare for autoconfig. # # See https://developer.mozilla.org/en-US/Firefox/Enterprise_deployment