diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2021-04-25 03:00:45 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2021-04-25 03:01:30 +0200 |
commit | 388a0ec1751688351781ddfd6175bc4e902356d1 (patch) | |
tree | 3576668f9d1d0e04a1012c9883a5749772f2c078 /sys-process/incron/files | |
parent | app-emulation/podman: Bump to version 3.1.2 (diff) | |
download | gentoo-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.patch | 40 |
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 + |