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/incron/files
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/incron/files')
-rw-r--r--sys-process/incron/files/incron-0.5.12-issue25.patch40
1 files changed, 40 insertions, 0 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
+