when an executable is symlinked and the symlink is executed, /proc/PID/status contains name of the symlink, while /proc/PID/exe points to the real executable name. cgrulesengd considered this case as error and did not trigger any rule for this exec().
With this patch, cgrulesengd uses name of /proc/PID/exe as the executable in this case. Signed-off-by: Jan Safranek <jsafr...@redhat.com> --- src/api.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/api.c b/src/api.c index e443ad5..b3c96d7 100644 --- a/src/api.c +++ b/src/api.c @@ -3694,11 +3694,24 @@ int cgroup_get_procname_from_procfs(pid_t pid, char **procname) */ ret = cg_get_procname_from_proc_cmdline(pid, pname_status, &pname_cmdline); - if (!ret) + if (!ret) { *procname = pname_cmdline; + free(pname_status); + return 0; + } + /* + * The above strncmp() is not 0 also if executing a symbolic link, + * /proc/pid/exe point to real executable name then. + * Return it as the last resort. + */ free(pname_status); - return ret; + *procname = strdup(buf); + if (*procname == NULL) { + last_errno = errno; + return ECGOTHER; + } + return 0; } int cgroup_register_unchanged_process(pid_t pid, int flags) ------------------------------------------------------------------------------ uberSVN's rich system and user administration capabilities and model configuration take the hassle out of deploying and managing Subversion and the tools developers use with it. Learn more about uberSVN and get a free download at: http://p.sf.net/sfu/wandisco-dev2dev _______________________________________________ Libcg-devel mailing list Libcg-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libcg-devel