diff -upr libcgroup-0.40.rc1.orig/src/api.c libcgroup-0.40.rc1/src/api.c --- libcgroup-0.40.rc1.orig/src/api.c 2013-09-26 17:48:57.997535000 +0200 +++ libcgroup-0.40.rc1/src/api.c 2013-09-27 13:36:41.617642596 +0200 @@ -2948,11 +2948,11 @@ int cgroup_change_cgroup_flags(uid_t uid available = FILENAME_MAX - j - 2; /* Substitution */ switch(tmp->destination[++i]) { - case 'u': + case 'U': written = snprintf(newdest+j, available, "%d", uid); break; - case 'U': + case 'u': user_info = getpwuid(uid); if(user_info) { written = snprintf(newdest + j, @@ -2963,11 +2963,11 @@ int cgroup_change_cgroup_flags(uid_t uid available, "%d", uid); } break; - case 'g': + case 'G': written = snprintf(newdest + j, available, "%d", gid); break; - case 'G': + case 'g': group_info = getgrgid(gid); if(group_info) { written = snprintf(newdest + j, @@ -2978,15 +2978,15 @@ int cgroup_change_cgroup_flags(uid_t uid available, "%d", gid); } break; - case 'p': + case 'P': written = snprintf(newdest + j, available, "%d", pid); break; - case 'P': - if(procname) { + case 'p': + if(procname && strlen(basename(procname))) { written = snprintf(newdest + j, available, "%s", - procname); + basename(procname)); } else { written = snprintf(newdest + j, available, "%d", pid);