diff options
author | Randy Dunlap <randy.dunlap@oracle.com> | 2011-05-20 09:10:04 -0700 |
---|---|---|
committer | Randy Dunlap <randy.dunlap@oracle.com> | 2011-05-20 09:10:04 -0700 |
commit | 2f3e4af471e38e0658e701973238ae4b5e50fcd6 (patch) | |
tree | fbfc99c0d975e38ff80f4ff3239a9fc0567b8a4d /fs/cifs/sess.c | |
parent | 61516587513c84ac26e68e3ab008dc6e965d0378 (diff) | |
parent | d410fa4ef99112386de5f218dd7df7b4fca910b4 (diff) | |
download | linux-3.10-2f3e4af471e38e0658e701973238ae4b5e50fcd6.tar.gz linux-3.10-2f3e4af471e38e0658e701973238ae4b5e50fcd6.tar.bz2 linux-3.10-2f3e4af471e38e0658e701973238ae4b5e50fcd6.zip |
Merge branch 'docs-security' into docs-move
Diffstat (limited to 'fs/cifs/sess.c')
-rw-r--r-- | fs/cifs/sess.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c index f6728eb6f4b..645114ad0a1 100644 --- a/fs/cifs/sess.c +++ b/fs/cifs/sess.c @@ -276,7 +276,7 @@ static void ascii_ssetup_strings(char **pbcc_area, struct cifsSesInfo *ses, } static void -decode_unicode_ssetup(char **pbcc_area, __u16 bleft, struct cifsSesInfo *ses, +decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifsSesInfo *ses, const struct nls_table *nls_cp) { int len; @@ -284,19 +284,6 @@ decode_unicode_ssetup(char **pbcc_area, __u16 bleft, struct cifsSesInfo *ses, cFYI(1, "bleft %d", bleft); - /* - * Windows servers do not always double null terminate their final - * Unicode string. Check to see if there are an uneven number of bytes - * left. If so, then add an extra NULL pad byte to the end of the - * response. - * - * See section 2.7.2 in "Implementing CIFS" for details - */ - if (bleft % 2) { - data[bleft] = 0; - ++bleft; - } - kfree(ses->serverOS); ses->serverOS = cifs_strndup_from_ucs(data, bleft, true, nls_cp); cFYI(1, "serverOS=%s", ses->serverOS); @@ -929,7 +916,9 @@ ssetup_ntlmssp_authenticate: } /* BB check if Unicode and decode strings */ - if (smb_buf->Flags2 & SMBFLG2_UNICODE) { + if (bytes_remaining == 0) { + /* no string area to decode, do nothing */ + } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { /* unicode string area must be word-aligned */ if (((unsigned long) bcc_ptr - (unsigned long) smb_buf) % 2) { ++bcc_ptr; |