From 79d593e1919fd989758d308a9f16eaf13a9d1cb9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 17 Jul 2011 00:35:34 +0200 Subject: [PATCH] dom0: Allow UID as parameter to qfile-dom0-unpacker --- dom0/aux-tools/qfile-dom0-unpacker.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/dom0/aux-tools/qfile-dom0-unpacker.c b/dom0/aux-tools/qfile-dom0-unpacker.c index f9861aa6..757a2c43 100644 --- a/dom0/aux-tools/qfile-dom0-unpacker.c +++ b/dom0/aux-tools/qfile-dom0-unpacker.c @@ -19,15 +19,20 @@ int prepare_creds_return_uid(char *username) { struct passwd *pwd; + // First try name pwd = getpwnam(username); if (!pwd) { - perror("getpwnam"); - exit(1); + // Then try UID + pwd = getpwuid(atoi(username)); + if (!pwd) { + perror("getpwuid"); + exit(1); + } } setenv("HOME", pwd->pw_dir, 1); - setenv("USER", username, 1); + setenv("USER", pwd->pw_name, 1); setgid(pwd->pw_gid); - initgroups(username, pwd->pw_gid); + initgroups(pwd->pw_name, pwd->pw_gid); setfsuid(pwd->pw_uid); return pwd->pw_uid; }