Commit 0628118c authored by Ruslan Kuprieiev's avatar Ruslan Kuprieiev Committed by Pavel Emelyanov

security: skip obtaining additional groups for root, as they don't matter

As it was reported, some systems don't use /etc/passwd.
On such systems getpwuid fails with undefined errno(see getpwuid(3))
not allowing criu to restrict ids with user additional groups.
Luckily, on such systems criu is run as root, so we can
just skip obtaining additional groups, as they don't matter
for root.
Reported-by: 's avatarChristopher Covington <cov@codeaurora.org>
Signed-off-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
Tested-by: 's avatarChristopher Covington <cov@codeaurora.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 5289ea97
...@@ -36,6 +36,10 @@ int restrict_uid(unsigned int uid, unsigned int gid) ...@@ -36,6 +36,10 @@ int restrict_uid(unsigned int uid, unsigned int gid)
cr_uid = uid; cr_uid = uid;
cr_gid = gid; cr_gid = gid;
/* skip obtaining additional groups for root, as they don't matter */
if (cr_uid == 0 && cr_gid == 0)
return 0;
pwd = getpwuid(uid); pwd = getpwuid(uid);
if (!pwd) { if (!pwd) {
pr_perror("Can't get password file entry"); pr_perror("Can't get password file entry");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment