Loading pkgs/applications/networking/p2p/jesec-rtorrent/avoid-stack-overflow-for-lockfile-buf.patch 0 → 100644 +30 −0 Original line number Diff line number Diff line From dd4a96073d4a60ca8fff55be6ea6b17018de96a8 Mon Sep 17 00:00:00 2001 From: Varun Madiath <git@madiathv.com> Date: Wed, 19 Jul 2023 15:30:57 -0400 Subject: [PATCH] utils: lockfile: avoid stack overflow for lockfile buffer Original patch by @cyphar was submitted to rakshasa/rtorrent at https://github.com/rakshasa/rtorrent/pull/1169. Observed the segfault on nixos-unstable. --- src/utils/lockfile.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/lockfile.cc b/src/utils/lockfile.cc index 76e4b8f..441f5c8 100644 --- a/src/utils/lockfile.cc +++ b/src/utils/lockfile.cc @@ -75,7 +75,8 @@ Lockfile::try_lock() { int pos = ::gethostname(buf, 255); if (pos == 0) { - ::snprintf(buf + std::strlen(buf), 255, ":+%i\n", ::getpid()); + ssize_t len = std::strlen(buf); + ::snprintf(buf + len, 255 - len, ":+%i\n", ::getpid()); ssize_t __attribute__((unused)) result = ::write(fd, buf, std::strlen(buf)); } -- 2.41.0 pkgs/applications/networking/p2p/jesec-rtorrent/default.nix +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ stdenv.mkDerivation rec { hash = "sha256-i7c1jSawHshj1kaXl8tdpelIKU24okeg9K5/+ht6t2k="; }; patches = [ ./avoid-stack-overflow-for-lockfile-buf.patch ]; passthru = { inherit libtorrent; }; Loading Loading
pkgs/applications/networking/p2p/jesec-rtorrent/avoid-stack-overflow-for-lockfile-buf.patch 0 → 100644 +30 −0 Original line number Diff line number Diff line From dd4a96073d4a60ca8fff55be6ea6b17018de96a8 Mon Sep 17 00:00:00 2001 From: Varun Madiath <git@madiathv.com> Date: Wed, 19 Jul 2023 15:30:57 -0400 Subject: [PATCH] utils: lockfile: avoid stack overflow for lockfile buffer Original patch by @cyphar was submitted to rakshasa/rtorrent at https://github.com/rakshasa/rtorrent/pull/1169. Observed the segfault on nixos-unstable. --- src/utils/lockfile.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/lockfile.cc b/src/utils/lockfile.cc index 76e4b8f..441f5c8 100644 --- a/src/utils/lockfile.cc +++ b/src/utils/lockfile.cc @@ -75,7 +75,8 @@ Lockfile::try_lock() { int pos = ::gethostname(buf, 255); if (pos == 0) { - ::snprintf(buf + std::strlen(buf), 255, ":+%i\n", ::getpid()); + ssize_t len = std::strlen(buf); + ::snprintf(buf + len, 255 - len, ":+%i\n", ::getpid()); ssize_t __attribute__((unused)) result = ::write(fd, buf, std::strlen(buf)); } -- 2.41.0
pkgs/applications/networking/p2p/jesec-rtorrent/default.nix +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ stdenv.mkDerivation rec { hash = "sha256-i7c1jSawHshj1kaXl8tdpelIKU24okeg9K5/+ht6t2k="; }; patches = [ ./avoid-stack-overflow-for-lockfile-buf.patch ]; passthru = { inherit libtorrent; }; Loading