aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r--fs/cifs/misc.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index 26b35b55f31b..8a0edd695f84 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -419,7 +419,7 @@ checkSMBhdr(struct smb_hdr *smb, __u16 mid)
419int 419int
420checkSMB(struct smb_hdr *smb, __u16 mid, int length) 420checkSMB(struct smb_hdr *smb, __u16 mid, int length)
421{ 421{
422 __u32 len = be32_to_cpu(smb->smb_buf_length); 422 __u32 len = smb->smb_buf_length;
423 cFYI(0, 423 cFYI(0,
424 ("Entering checkSMB with Length: %x, smb_buf_length: %x ", 424 ("Entering checkSMB with Length: %x, smb_buf_length: %x ",
425 length, len)); 425 length, len));
@@ -448,9 +448,9 @@ checkSMB(struct smb_hdr *smb, __u16 mid, int length)
448 if (checkSMBhdr(smb, mid)) 448 if (checkSMBhdr(smb, mid))
449 return 1; 449 return 1;
450 450
451 if ((4 + len != smbCalcSize(smb)) 451 if ((4 + len != smbCalcSize_LE(smb))
452 || (4 + len != (unsigned int)length)) { 452 || (4 + len != (unsigned int)length)) {
453 cERROR(1, ("smbCalcSize %x ", smbCalcSize(smb))); 453 cERROR(1, ("smbCalcSize %x ", smbCalcSize_LE(smb)));
454 cERROR(1, 454 cERROR(1,
455 ("bad smb size detected. The Mid=%d", smb->Mid)); 455 ("bad smb size detected. The Mid=%d", smb->Mid));
456 return 1; 456 return 1;
@@ -672,6 +672,7 @@ cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
672 int i,j,charlen; 672 int i,j,charlen;
673 int len_remaining = maxlen; 673 int len_remaining = maxlen;
674 char src_char; 674 char src_char;
675 __u16 temp;
675 676
676 if(!mapChars) 677 if(!mapChars)
677 return cifs_strtoUCS((wchar_t *) target, source, PATH_MAX, cp); 678 return cifs_strtoUCS((wchar_t *) target, source, PATH_MAX, cp);
@@ -708,13 +709,14 @@ cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
708 break;*/ 709 break;*/
709 default: 710 default:
710 charlen = cp->char2uni(source+i, 711 charlen = cp->char2uni(source+i,
711 len_remaining, target+j); 712 len_remaining, &temp);
712 /* if no match, use question mark, which 713 /* if no match, use question mark, which
713 at least in some cases servers as wild card */ 714 at least in some cases servers as wild card */
714 if(charlen < 1) { 715 if(charlen < 1) {
715 target[j] = cpu_to_le16(0x003f); 716 target[j] = cpu_to_le16(0x003f);
716 charlen = 1; 717 charlen = 1;
717 } 718 } else
719 target[j] = cpu_to_le16(temp);
718 len_remaining -= charlen; 720 len_remaining -= charlen;
719 /* character may take more than one byte in the 721 /* character may take more than one byte in the
720 the source string, but will take exactly two 722 the source string, but will take exactly two