summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2021-04-25 03:00:45 +0200
committerThomas Deutschmann <whissi@gentoo.org>2021-04-25 03:01:30 +0200
commit388a0ec1751688351781ddfd6175bc4e902356d1 (patch)
tree3576668f9d1d0e04a1012c9883a5749772f2c078 /sys-process
parentapp-emulation/podman: Bump to version 3.1.2 (diff)
downloadgentoo-388a0ec1751688351781ddfd6175bc4e902356d1.tar.gz
gentoo-388a0ec1751688351781ddfd6175bc4e902356d1.tar.bz2
gentoo-388a0ec1751688351781ddfd6175bc4e902356d1.zip
sys-process/incron: Fix crash when accessing path of..
...created/moved dir in watched directory. Closes: https://bugs.gentoo.org/785448 Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'sys-process')
-rw-r--r--sys-process/incron/files/incron-0.5.12-issue25.patch40
-rw-r--r--sys-process/incron/incron-0.5.12_p20191114-r1.ebuild (renamed from sys-process/incron/incron-0.5.12_p20191114.ebuild)7
2 files changed, 45 insertions, 2 deletions
diff --git a/sys-process/incron/files/incron-0.5.12-issue25.patch b/sys-process/incron/files/incron-0.5.12-issue25.patch
new file mode 100644
index 000000000000..8883aec180ab
--- /dev/null
+++ b/sys-process/incron/files/incron-0.5.12-issue25.patch
@@ -0,0 +1,40 @@
+https://bugs.gentoo.org/785448
+
+Origin: https://github.com/ar-/incron/issues/25#issuecomment-583796322
+
+--- old/usertable.cpp
++++ new/usertable.cpp
+@@ -370,20 +370,21 @@ void UserTable::OnEvent(InotifyEvent& rEvt)
+ {
+ InotifyWatch* pW = rEvt.GetWatch();
+ IncronTabEntry* pE = FindEntry(pW);
++ std::string pW_path = pW->GetPath();
+
+ // no entry found - this shouldn't occur
+ if (pE == NULL)
+ return;
+
+ // discard event if user has no access rights to watch path
+- if (!(m_fSysTable || MayAccess(pW->GetPath(), DONT_FOLLOW(rEvt.GetMask()))))
++ if (!(m_fSysTable || MayAccess(pW_path, DONT_FOLLOW(rEvt.GetMask()))))
+ return;
+
+ //#if 0
+ // log output for each dir + file + event
+ std::string events;
+ rEvt.DumpTypes(events);
+- syslog(LOG_INFO, "PATH (%s) FILE (%s) EVENT (%s)", pW->GetPath().c_str() , IncronTabEntry::GetSafePath(rEvt.GetName()).c_str() , events.c_str());
++ syslog(LOG_INFO, "PATH (%s) FILE (%s) EVENT (%s)", pW_path.c_str() , IncronTabEntry::GetSafePath(rEvt.GetName()).c_str() , events.c_str());
+ //#endif
+
+ // add new watch for newly created subdirs
+@@ -422,7 +423,7 @@ void UserTable::OnEvent(InotifyEvent& rEvt)
+ else {
+ cmd.append(cs.substr(oldpos, pos-oldpos));
+ if (cs[px] == '@') { // base path
+- cmd.append(IncronTabEntry::GetSafePath(pW->GetPath()));
++ cmd.append(IncronTabEntry::GetSafePath(pW_path));
+ oldpos = pos + 2;
+ }
+ else if (cs[px] == '#') { // file name
+
diff --git a/sys-process/incron/incron-0.5.12_p20191114.ebuild b/sys-process/incron/incron-0.5.12_p20191114-r1.ebuild
index 28928d33fc2d..7e7ab9ba0fb1 100644
--- a/sys-process/incron/incron-0.5.12_p20191114.ebuild
+++ b/sys-process/incron/incron-0.5.12_p20191114-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
@@ -20,7 +20,10 @@ IUSE=""
DEPEND=""
RDEPEND=""
-PATCHES=( "${FILESDIR}"/${PN}-0.5.12-use-execl-instead-system.patch )
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.5.12-use-execl-instead-system.patch
+ "${FILESDIR}"/${PN}-0.5.12-issue25.patch
+)
# < 2.6.18 => INOTIFY, >= 2.6.18 => INOTIFY_USER
# It should be ok to expect at least 2.6.18