commit:     1ae7ddd19bc5c2713e5b6a100c69663d58ca72fa
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec  9 19:06:09 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Dec  9 19:16:00 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ae7ddd1

sys-devel/distcc: Backport fix for crash on non-existing dir

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...stcc-3.3.2-r3.ebuild => distcc-3.3.2-r4.ebuild} |  2 ++
 .../distcc/files/distcc-3.3.2-noexist-crash.patch  | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/sys-devel/distcc/distcc-3.3.2-r3.ebuild 
b/sys-devel/distcc/distcc-3.3.2-r4.ebuild
similarity index 98%
rename from sys-devel/distcc/distcc-3.3.2-r3.ebuild
rename to sys-devel/distcc/distcc-3.3.2-r4.ebuild
index 1266d913df9..01cca1f446a 100644
--- a/sys-devel/distcc/distcc-3.3.2-r3.ebuild
+++ b/sys-devel/distcc/distcc-3.3.2-r4.ebuild
@@ -56,6 +56,8 @@ src_prepare() {
        eapply "${FILESDIR}/${PN}-3.3.2-freedesktop.patch"
        # SOCKSv5 support needed for Portage, bug #537616
        eapply "${FILESDIR}/${PN}-3.2_rc1-socks5.patch"
+       # crash on missing directory
+       eapply "${FILESDIR}"/distcc-3.3.2-noexist-crash.patch
        eapply_user
 
        # Bugs #120001, #167844 and probably more. See patch for description.

diff --git a/sys-devel/distcc/files/distcc-3.3.2-noexist-crash.patch 
b/sys-devel/distcc/files/distcc-3.3.2-noexist-crash.patch
new file mode 100644
index 00000000000..7f378082d99
--- /dev/null
+++ b/sys-devel/distcc/files/distcc-3.3.2-noexist-crash.patch
@@ -0,0 +1,22 @@
+From 24f73c5cd8f839bd520eb52e91d0d26e07689373 Mon Sep 17 00:00:00 2001
+From: Shawn Landden <sh...@git.icu>
+Date: Wed, 29 Aug 2018 04:52:38 -0700
+Subject: [PATCH] fix #304
+
+---
+ src/daemon.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/daemon.c b/src/daemon.c
+index 5765982..c8fee7c 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -166,7 +166,7 @@ static void dcc_warn_masquerade_whitelist(void) {
+         rs_log_crit(LIBDIR "/distcc not found. %s", warn);
+         dcc_exit(EXIT_COMPILER_MISSING);
+     }
+-    if (!readdir(e) && !readdir(d)) {
++    if ((!e || !readdir(e)) && (!d || !readdir(d))) {
+         rs_log_crit(LIBDIR "/distcc empty. %s", warn);
+         dcc_exit(EXIT_COMPILER_MISSING);
+     }

Reply via email to