Skip to content

Commit

Permalink
svcrpc: fix gss-proxy to respect user namespaces
Browse files Browse the repository at this point in the history
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
  • Loading branch information
J. Bruce Fields committed Apr 29, 2013
1 parent 6278b62 commit d28fcc8
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions net/sunrpc/auth_gss/gss_rpc_xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,13 +216,13 @@ static int gssx_dec_linux_creds(struct xdr_stream *xdr,
err = get_s32(&q, end, &tmp);
if (err)
return err;
creds->cr_uid = tmp;
creds->cr_uid = make_kuid(&init_user_ns, tmp);

/* gid */
err = get_s32(&q, end, &tmp);
if (err)
return err;
creds->cr_gid = tmp;
creds->cr_gid = make_kgid(&init_user_ns, tmp);

/* number of additional gid's */
err = get_s32(&q, end, &tmp);
Expand All @@ -235,15 +235,21 @@ static int gssx_dec_linux_creds(struct xdr_stream *xdr,

/* gid's */
for (i = 0; i < N; i++) {
kgid_t kgid;
err = get_s32(&q, end, &tmp);
if (err) {
groups_free(creds->cr_group_info);
return err;
}
GROUP_AT(creds->cr_group_info, i) = tmp;
if (err)
goto out_free_groups;
err = -EINVAL;
kgid = make_kgid(&init_user_ns, tmp);
if (!gid_valid(kgid))
goto out_free_groups;
GROUP_AT(creds->cr_group_info, i) = kgid;
}

return 0;
out_free_groups:
groups_free(creds->cr_group_info);
return err;
}

static int gssx_dec_option_array(struct xdr_stream *xdr,
Expand Down

0 comments on commit d28fcc8

Please sign in to comment.