mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 06:01:23 +00:00
[SUNRPC]: svc_{get,put}nl()
* add svc_getnl(): Take network-endian value from buffer, convert to host-endian and return it. * add svc_putnl(): Take host-endian value, convert to network-endian and put it into a buffer. * annotate svc_getu32()/svc_putu32() as dealing with network-endian. * convert to svc_getnl(), svc_putnl(). [AV: in large part it's a carved-up Alexey's patch] Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
13d8eaa06a
commit
7699431301
5 changed files with 84 additions and 67 deletions
|
@ -427,7 +427,7 @@ svcauth_null_accept(struct svc_rqst *rqstp, u32 *authp)
|
|||
*authp = rpc_autherr_badcred;
|
||||
return SVC_DENIED;
|
||||
}
|
||||
if (svc_getu32(argv) != RPC_AUTH_NULL || svc_getu32(argv) != 0) {
|
||||
if (svc_getu32(argv) != htonl(RPC_AUTH_NULL) || svc_getu32(argv) != 0) {
|
||||
dprintk("svc: bad null verf\n");
|
||||
*authp = rpc_autherr_badverf;
|
||||
return SVC_DENIED;
|
||||
|
@ -441,8 +441,8 @@ svcauth_null_accept(struct svc_rqst *rqstp, u32 *authp)
|
|||
return SVC_DROP; /* kmalloc failure - client must retry */
|
||||
|
||||
/* Put NULL verifier */
|
||||
svc_putu32(resv, RPC_AUTH_NULL);
|
||||
svc_putu32(resv, 0);
|
||||
svc_putnl(resv, RPC_AUTH_NULL);
|
||||
svc_putnl(resv, 0);
|
||||
|
||||
return SVC_OK;
|
||||
}
|
||||
|
@ -488,31 +488,31 @@ svcauth_unix_accept(struct svc_rqst *rqstp, u32 *authp)
|
|||
|
||||
svc_getu32(argv); /* length */
|
||||
svc_getu32(argv); /* time stamp */
|
||||
slen = XDR_QUADLEN(ntohl(svc_getu32(argv))); /* machname length */
|
||||
slen = XDR_QUADLEN(svc_getnl(argv)); /* machname length */
|
||||
if (slen > 64 || (len -= (slen + 3)*4) < 0)
|
||||
goto badcred;
|
||||
argv->iov_base = (void*)((u32*)argv->iov_base + slen); /* skip machname */
|
||||
argv->iov_len -= slen*4;
|
||||
|
||||
cred->cr_uid = ntohl(svc_getu32(argv)); /* uid */
|
||||
cred->cr_gid = ntohl(svc_getu32(argv)); /* gid */
|
||||
slen = ntohl(svc_getu32(argv)); /* gids length */
|
||||
cred->cr_uid = svc_getnl(argv); /* uid */
|
||||
cred->cr_gid = svc_getnl(argv); /* gid */
|
||||
slen = svc_getnl(argv); /* gids length */
|
||||
if (slen > 16 || (len -= (slen + 2)*4) < 0)
|
||||
goto badcred;
|
||||
cred->cr_group_info = groups_alloc(slen);
|
||||
if (cred->cr_group_info == NULL)
|
||||
return SVC_DROP;
|
||||
for (i = 0; i < slen; i++)
|
||||
GROUP_AT(cred->cr_group_info, i) = ntohl(svc_getu32(argv));
|
||||
GROUP_AT(cred->cr_group_info, i) = svc_getnl(argv);
|
||||
|
||||
if (svc_getu32(argv) != RPC_AUTH_NULL || svc_getu32(argv) != 0) {
|
||||
if (svc_getu32(argv) != htonl(RPC_AUTH_NULL) || svc_getu32(argv) != 0) {
|
||||
*authp = rpc_autherr_badverf;
|
||||
return SVC_DENIED;
|
||||
}
|
||||
|
||||
/* Put NULL verifier */
|
||||
svc_putu32(resv, RPC_AUTH_NULL);
|
||||
svc_putu32(resv, 0);
|
||||
svc_putnl(resv, RPC_AUTH_NULL);
|
||||
svc_putnl(resv, 0);
|
||||
|
||||
return SVC_OK;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue