X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=os-posix.c;h=6f8d4886eaee3ba700d390b2527b5928543057a3;hb=69ed8366b1e8602b6b7555902f453d3e5df5dd41;hp=320419793a5c95d62be0f4a1fbc91b710f1bb30f;hpb=5300f1a5487f67f0bde8ee1081b799108668cb1d;p=qemu.git diff --git a/os-posix.c b/os-posix.c index 320419793..6f8d4886e 100644 --- a/os-posix.c +++ b/os-posix.c @@ -31,6 +31,7 @@ /*needed for MAP_POPULATE before including qemu-options.h */ #include #include +#include #include /* Needed early for CONFIG_BSD etc. */ @@ -199,6 +200,11 @@ static void change_process_uid(void) fprintf(stderr, "Failed to setgid(%d)\n", user_pwd->pw_gid); exit(1); } + if (initgroups(user_pwd->pw_name, user_pwd->pw_gid) < 0) { + fprintf(stderr, "Failed to initgroups(\"%s\", %d)\n", + user_pwd->pw_name, user_pwd->pw_gid); + exit(1); + } if (setuid(user_pwd->pw_uid) < 0) { fprintf(stderr, "Failed to setuid(%d)\n", user_pwd->pw_uid); exit(1); @@ -368,7 +374,7 @@ int qemu_create_pidfile(const char *filename) if (lockf(fd, F_TLOCK, 0) == -1) { return -1; } - len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid()); + len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid()); if (write(fd, buffer, len) != len) { return -1; }