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


Reply via email to