aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4xdr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r--fs/nfsd/nfs4xdr.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index f35a94a04026..71d7d339e44a 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1005,7 +1005,7 @@ static __be32
1005nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, 1005nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
1006 struct nfsd4_exchange_id *exid) 1006 struct nfsd4_exchange_id *exid)
1007{ 1007{
1008 int dummy; 1008 int dummy, tmp;
1009 DECODE_HEAD; 1009 DECODE_HEAD;
1010 1010
1011 READ_BUF(NFS4_VERIFIER_SIZE); 1011 READ_BUF(NFS4_VERIFIER_SIZE);
@@ -1053,15 +1053,23 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
1053 1053
1054 /* ssp_hash_algs<> */ 1054 /* ssp_hash_algs<> */
1055 READ_BUF(4); 1055 READ_BUF(4);
1056 READ32(dummy); 1056 READ32(tmp);
1057 READ_BUF(dummy); 1057 while (tmp--) {
1058 p += XDR_QUADLEN(dummy); 1058 READ_BUF(4);
1059 READ32(dummy);
1060 READ_BUF(dummy);
1061 p += XDR_QUADLEN(dummy);
1062 }
1059 1063
1060 /* ssp_encr_algs<> */ 1064 /* ssp_encr_algs<> */
1061 READ_BUF(4); 1065 READ_BUF(4);
1062 READ32(dummy); 1066 READ32(tmp);
1063 READ_BUF(dummy); 1067 while (tmp--) {
1064 p += XDR_QUADLEN(dummy); 1068 READ_BUF(4);
1069 READ32(dummy);
1070 READ_BUF(dummy);
1071 p += XDR_QUADLEN(dummy);
1072 }
1065 1073
1066 /* ssp_window and ssp_num_gss_handles */ 1074 /* ssp_window and ssp_num_gss_handles */
1067 READ_BUF(8); 1075 READ_BUF(8);