On 11/24/2011 06:29 PM, Chris Webb wrote: > This allows qemu to drop privileges to a dynamically allocated, anonymous UID > and GID without needing a temporary /etc/passwd entry for that UID. The > UID:GID format is very standard, being (for example) the syntax used by > chown(1) for numeric IDs.
> @@ -179,6 +179,15 @@ void os_parse_cmd_args(int index, const char *optarg) > case QEMU_OPTION_runas: > user_pwd = getpwnam(optarg); > if (!user_pwd) { > + long uid, gid, tail; > + if (sscanf(optarg, "%ld:%ld%ln", &uid, &gid, &tail) >= 2 > + && !optarg[tail]) { > + user_pwd = g_malloc0(sizeof(user_pwd)); g_new0() please. user_pwd is never freed, not that it matters ,uch. > + user_pwd->pw_uid = uid; > + user_pwd->pw_gid = gid; > + } > + } > + if (!user_pwd) { > fprintf(stderr, "User \"%s\" doesn't exist\n", optarg); > exit(1); > } -- error compiling committee.c: too many arguments to function