From 388a0ec1751688351781ddfd6175bc4e902356d1 Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Sun, 25 Apr 2021 03:00:45 +0200 Subject: 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 --- .../incron/files/incron-0.5.12-issue25.patch | 40 ++++++++++++++ .../incron/incron-0.5.12_p20191114-r1.ebuild | 62 ++++++++++++++++++++++ sys-process/incron/incron-0.5.12_p20191114.ebuild | 59 -------------------- 3 files changed, 102 insertions(+), 59 deletions(-) create mode 100644 sys-process/incron/files/incron-0.5.12-issue25.patch create mode 100644 sys-process/incron/incron-0.5.12_p20191114-r1.ebuild delete mode 100644 sys-process/incron/incron-0.5.12_p20191114.ebuild (limited to 'sys-process') 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-r1.ebuild b/sys-process/incron/incron-0.5.12_p20191114-r1.ebuild new file mode 100644 index 000000000000..7e7ab9ba0fb1 --- /dev/null +++ b/sys-process/incron/incron-0.5.12_p20191114-r1.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit linux-info systemd toolchain-funcs + +COMMIT="1eedfbc9b318372efd119fd17f4abdbde561a53d" +S="${WORKDIR}/${PN}-${COMMIT}" + +DESCRIPTION="inotify based cron daemon" +HOMEPAGE="https://incron.aiken.cz/" +SRC_URI="https://github.com/ar-/incron/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="amd64 ~arm64 ppc x86" +IUSE="" + +DEPEND="" +RDEPEND="" + +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 +CONFIG_CHECK="~INOTIFY_USER" + +src_prepare() { + default + + sed -i \ + -e '/$(INSTALL) -m 0644 incron.conf $(DESTDIR)$(INITDIR)/d' \ + Makefile \ + || die +} + +src_compile() { + emake CXX=$(tc-getCXX) +} + +src_install() { + emake DESTDIR="${D}" PREFIX=/usr DOCDIR=/usr/share/doc/${PF} install + + newinitd "${FILESDIR}/incrond-r1.init" incrond + newconfd "${FILESDIR}/incrond.conf" incrond + systemd_dounit "${FILESDIR}/incrond.service" + + dodoc CHANGELOG README TODO + + insinto /etc + doins "${FILESDIR}"/incron.conf + touch \ + "${D}/etc/incron.allow" \ + "${D}/etc/incron.deny" \ + || die + + keepdir /var/spool/${PN} +} diff --git a/sys-process/incron/incron-0.5.12_p20191114.ebuild b/sys-process/incron/incron-0.5.12_p20191114.ebuild deleted file mode 100644 index 28928d33fc2d..000000000000 --- a/sys-process/incron/incron-0.5.12_p20191114.ebuild +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -inherit linux-info systemd toolchain-funcs - -COMMIT="1eedfbc9b318372efd119fd17f4abdbde561a53d" -S="${WORKDIR}/${PN}-${COMMIT}" - -DESCRIPTION="inotify based cron daemon" -HOMEPAGE="https://incron.aiken.cz/" -SRC_URI="https://github.com/ar-/incron/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" - -LICENSE="GPL-2 LGPL-2.1" -SLOT="0" -KEYWORDS="amd64 ~arm64 ppc x86" -IUSE="" - -DEPEND="" -RDEPEND="" - -PATCHES=( "${FILESDIR}"/${PN}-0.5.12-use-execl-instead-system.patch ) - -# < 2.6.18 => INOTIFY, >= 2.6.18 => INOTIFY_USER -# It should be ok to expect at least 2.6.18 -CONFIG_CHECK="~INOTIFY_USER" - -src_prepare() { - default - - sed -i \ - -e '/$(INSTALL) -m 0644 incron.conf $(DESTDIR)$(INITDIR)/d' \ - Makefile \ - || die -} - -src_compile() { - emake CXX=$(tc-getCXX) -} - -src_install() { - emake DESTDIR="${D}" PREFIX=/usr DOCDIR=/usr/share/doc/${PF} install - - newinitd "${FILESDIR}/incrond-r1.init" incrond - newconfd "${FILESDIR}/incrond.conf" incrond - systemd_dounit "${FILESDIR}/incrond.service" - - dodoc CHANGELOG README TODO - - insinto /etc - doins "${FILESDIR}"/incron.conf - touch \ - "${D}/etc/incron.allow" \ - "${D}/etc/incron.deny" \ - || die - - keepdir /var/spool/${PN} -} -- cgit v1.2.3-65-gdbad