libprocessgroup: Check validity of uid and pid arguments
A user ID (uid) must be greater than or equal to zero to be valid. Only strictly positive process IDs are valid. Add argument checks in libprocessgroup of uid and pid arguments to make it easier to determine the origin of invalid arguments. Change-Id: I8a6d96ca4576bc9c329498c6a804dd05a02afca5 Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
parent
eef0f563fd
commit
5a3c3f7ccf
1 changed files with 6 additions and 9 deletions
|
@ -446,14 +446,9 @@ static int DoKillProcessGroupOnce(const char* cgroup, uid_t uid, int initialPid,
|
|||
|
||||
static int KillProcessGroup(uid_t uid, int initialPid, int signal, int retries,
|
||||
int* max_processes) {
|
||||
if (uid < 0) {
|
||||
LOG(ERROR) << __func__ << ": invalid UID " << uid;
|
||||
return -1;
|
||||
}
|
||||
if (initialPid <= 0) {
|
||||
LOG(ERROR) << __func__ << ": invalid PID " << initialPid;
|
||||
return -1;
|
||||
}
|
||||
CHECK_GE(uid, 0);
|
||||
CHECK_GT(initialPid, 0);
|
||||
|
||||
std::string hierarchy_root_path;
|
||||
if (CgroupsAvailable()) {
|
||||
CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &hierarchy_root_path);
|
||||
|
@ -590,7 +585,8 @@ static int createProcessGroupInternal(uid_t uid, int initialPid, std::string cgr
|
|||
}
|
||||
|
||||
int createProcessGroup(uid_t uid, int initialPid, bool memControl) {
|
||||
std::string cgroup;
|
||||
CHECK_GE(uid, 0);
|
||||
CHECK_GT(initialPid, 0);
|
||||
|
||||
if (memControl && !UsePerAppMemcg()) {
|
||||
PLOG(ERROR) << "service memory controls are used without per-process memory cgroup support";
|
||||
|
@ -608,6 +604,7 @@ int createProcessGroup(uid_t uid, int initialPid, bool memControl) {
|
|||
}
|
||||
}
|
||||
|
||||
std::string cgroup;
|
||||
CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &cgroup);
|
||||
return createProcessGroupInternal(uid, initialPid, cgroup, true);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue