diff --git a/dom0-updates/qfile-dom0-unpacker.c b/dom0-updates/qfile-dom0-unpacker.c index 13ea3de..d1bbe04 100644 --- a/dom0-updates/qfile-dom0-unpacker.c +++ b/dom0-updates/qfile-dom0-unpacker.c @@ -33,9 +33,15 @@ int prepare_creds_return_uid(const char *username) } setenv("HOME", pwd->pw_dir, 1); setenv("USER", pwd->pw_name, 1); - setgid(pwd->pw_gid); + if (setgid(pwd->pw_gid) < 0) { + perror("setgid"); + exit(1); + } initgroups(pwd->pw_name, pwd->pw_gid); - setfsuid(pwd->pw_uid); + if (setfsuid(pwd->pw_uid) < 0) { + perror("setfsuid"); + exit(1); + } return pwd->pw_uid; } @@ -69,7 +75,10 @@ int main(int argc, char ** argv) fprintf(stderr, "Error chroot to %s", incoming_dir); exit(1); } - setuid(uid); + if (setuid(uid) < 0) { + perror("setuid"); + exit(1); + } set_size_limit(bytes_limit, files_limit); if (argc > 3 && strcmp(argv[3],"-v")==0) set_verbose(1);