@ -821,8 +821,8 @@ PsxDelete:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB add path length overrun check */
@ -893,8 +893,8 @@ DelFileRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > fileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > fileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve check for buffer overruns BB */
@ -938,8 +938,8 @@ RmDirRetry:
return rc ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len = cifsConvertToUCS ( ( __le16 * ) pSMB - > DirName , dirName ,
PATH_MAX , nls_codepage , remap ) ;
name_len = cifsConvertToUTF16 ( ( __le16 * ) pSMB - > DirName , dirName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve check for buffer overruns BB */
@ -981,8 +981,8 @@ MkDirRetry:
return rc ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len = cifsConvertToUCS ( ( __le16 * ) pSMB - > DirName , name ,
PATH_MAX , nls_codepage , remap ) ;
name_len = cifsConvertToUTF16 ( ( __le16 * ) pSMB - > DirName , name ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve check for buffer overruns BB */
@ -1030,8 +1030,8 @@ PsxCreat:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , name ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , name ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -1197,8 +1197,8 @@ OldOpenRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
count = 1 ; /* account for one byte pad to word boundary */
name_len =
cifsConvertToUCS ( ( __le16 * ) ( pSMB - > fileName + 1 ) ,
fileName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) ( pSMB - > fileName + 1 ) ,
fileName , PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve check for buffer overruns BB */
@ -1304,8 +1304,8 @@ openRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
count = 1 ; /* account for one byte pad to word boundary */
name_len =
cifsConvertToUCS ( ( __le16 * ) ( pSMB - > fileName + 1 ) ,
fileName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) ( pSMB - > fileName + 1 ) ,
fileName , PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
pSMB - > NameLength = cpu_to_le16 ( name_len ) ;
@ -2649,16 +2649,16 @@ renameRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > OldFileName , fromName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > OldFileName , fromName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
pSMB - > OldFileName [ name_len ] = 0x04 ; /* pad */
/* protocol requires ASCII signature byte on Unicode string */
pSMB - > OldFileName [ name_len + 1 ] = 0x00 ;
name_len2 =
cifsConvertToUCS ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
name_len2 + = 1 /* trailing null */ + 1 /* Signature word */ ;
name_len2 * = 2 ; /* convert to bytes */
} else { /* BB improve the check for buffer overruns BB */
@ -2738,10 +2738,12 @@ int CIFSSMBRenameOpenFile(const int xid, struct cifs_tcon *pTcon,
/* unicode only call */
if ( target_name = = NULL ) {
sprintf ( dummy_string , " cifs%x " , pSMB - > hdr . Mid ) ;
len_of_str = cifsConvertToUCS ( ( __le16 * ) rename_info - > target_name ,
len_of_str =
cifsConvertToUTF16 ( ( __le16 * ) rename_info - > target_name ,
dummy_string , 24 , nls_codepage , remap ) ;
} else {
len_of_str = cifsConvertToUCS ( ( __le16 * ) rename_info - > target_name ,
len_of_str =
cifsConvertToUTF16 ( ( __le16 * ) rename_info - > target_name ,
target_name , PATH_MAX , nls_codepage ,
remap ) ;
}
@ -2795,17 +2797,17 @@ copyRetry:
pSMB - > Flags = cpu_to_le16 ( flags & COPY_TREE ) ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len = cifsConvertToUCS ( ( __le16 * ) pSMB - > OldFileName ,
fromName , PATH_MAX , nls_codepage ,
remap ) ;
name_len = cifsConvertToUTF16 ( ( __le16 * ) pSMB - > OldFileName ,
fromName , PATH_MAX , nls_codepage ,
remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
pSMB - > OldFileName [ name_len ] = 0x04 ; /* pad */
/* protocol requires ASCII signature byte on Unicode string */
pSMB - > OldFileName [ name_len + 1 ] = 0x00 ;
name_len2 =
cifsConvertToUCS ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
name_len2 + = 1 /* trailing null */ + 1 /* Signature word */ ;
name_len2 * = 2 ; /* convert to bytes */
} else { /* BB improve the check for buffer overruns BB */
@ -2861,9 +2863,9 @@ createSymLinkRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifs_strtoUCS ( ( __le16 * ) pSMB - > FileName , fromName , PATH_MAX
/* find define for this maxpathcomponent */
, nls_codepage ) ;
cifs_strtoUTF16 ( ( __le16 * ) pSMB - > FileName , fromName ,
/* find define for this maxpathcomponent */
PATH_MAX , nls_codepage ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
@ -2885,9 +2887,9 @@ createSymLinkRetry:
data_offset = ( char * ) ( & pSMB - > hdr . Protocol ) + offset ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len_target =
cifs_strtoUCS ( ( __le16 * ) data_offset , toName , PATH_MAX
/* find define for this maxpathcomponent */
, nls_codepage ) ;
cifs_strtoUTF16 ( ( __le16 * ) data_offset , toName , PATH_MAX
/* find define for this maxpathcomponent */
, nls_codepage ) ;
name_len_target + + ; /* trailing null */
name_len_target * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -2949,8 +2951,8 @@ createHardLinkRetry:
return rc ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len = cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , toName ,
PATH_MAX , nls_codepage , remap ) ;
name_len = cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , toName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
@ -2972,8 +2974,8 @@ createHardLinkRetry:
data_offset = ( char * ) ( & pSMB - > hdr . Protocol ) + offset ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len_target =
cifsConvertToUCS ( ( __le16 * ) data_offset , fromName , PATH_MAX ,
nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) data_offset , fromName ,
PATH_MAX , nls_codepage , remap ) ;
name_len_target + + ; /* trailing null */
name_len_target * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -3042,8 +3044,8 @@ winCreateHardLinkRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > OldFileName , fromName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > OldFileName , fromName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
@ -3051,8 +3053,8 @@ winCreateHardLinkRetry:
pSMB - > OldFileName [ name_len ] = 0x04 ;
pSMB - > OldFileName [ name_len + 1 ] = 0x00 ; /* pad */
name_len2 =
cifsConvertToUCS ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) & pSMB - > OldFileName [ name_len + 2 ] ,
toName , PATH_MAX , nls_codepage , remap ) ;
name_len2 + = 1 /* trailing null */ + 1 /* Signature word */ ;
name_len2 * = 2 ; /* convert to bytes */
} else { /* BB improve the check for buffer overruns BB */
@ -3108,8 +3110,8 @@ querySymLinkRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifs_strtoUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage ) ;
cifs_strtoUTF16 ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -3166,8 +3168,8 @@ querySymLinkRetry:
is_unicode = false ;
/* BB FIXME investigate remapping reserved chars here */
* symlinkinfo = cifs_strndup_from_ucs ( data_start , coun t ,
is_unicode , nls_codepage ) ;
* symlinkinfo = cifs_strndup_from_utf16 ( data_start ,
count , is_unicode , nls_codepage ) ;
if ( ! * symlinkinfo )
rc = - ENOMEM ;
}
@ -3450,8 +3452,9 @@ queryAclRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName ,
searchName , PATH_MAX , nls_codepage ,
remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
pSMB - > FileName [ name_len ] = 0 ;
@ -3537,8 +3540,8 @@ setAclRetry:
return rc ;
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -3948,8 +3951,9 @@ QInfRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName ,
searchName , PATH_MAX , nls_codepage ,
remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else {
@ -4086,8 +4090,8 @@ QPathInfoRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -4255,8 +4259,8 @@ UnixQPathInfoRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -4344,8 +4348,8 @@ findFirstRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
/* We can not add the asterik earlier in case
it got remapped to 0xF03A as if it were part of the
directory name instead of a wildcard */
@ -4656,8 +4660,9 @@ GetInodeNumberRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName ,
searchName , PATH_MAX , nls_codepage ,
remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -4794,9 +4799,9 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
rc = - ENOMEM ;
goto parse_DFS_referrals_exit ;
}
cifsConvertToUCS ( ( __le16 * ) tmp , searchName ,
PATH_MAX , nls_codepage , remap ) ;
node - > path_consumed = cifs_ucs2 _bytes ( tmp ,
cifsConvertToUTF16 ( ( __le16 * ) tmp , searchName ,
PATH_MAX , nls_codepage , remap ) ;
node - > path_consumed = cifs_utf16 _bytes ( tmp ,
le16_to_cpu ( pSMBr - > PathConsumed ) ,
nls_codepage ) ;
kfree ( tmp ) ;
@ -4809,8 +4814,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
/* copy DfsPath */
temp = ( char * ) ref + le16_to_cpu ( ref - > DfsPathOffset ) ;
max_len = data_end - temp ;
node - > path_name = cifs_strndup_from_ucs ( temp , max_len ,
is_unicode , nls_codepage ) ;
node - > path_name = cifs_strndup_from_utf16 ( temp , max_len ,
is_unicode , nls_codepage ) ;
if ( ! node - > path_name ) {
rc = - ENOMEM ;
goto parse_DFS_referrals_exit ;
@ -4819,8 +4824,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
/* copy link target UNC */
temp = ( char * ) ref + le16_to_cpu ( ref - > NetworkAddressOffset ) ;
max_len = data_end - temp ;
node - > node_name = cifs_strndup_from_ucs ( temp , max_len ,
is_unicode , nls_codepage ) ;
node - > node_name = cifs_strndup_from_utf16 ( temp , max_len ,
is_unicode , nls_codepage ) ;
if ( ! node - > node_name )
rc = - ENOMEM ;
}
@ -4873,8 +4878,9 @@ getDFSRetry:
if ( ses - > capabilities & CAP_UNICODE ) {
pSMB - > hdr . Flags2 | = SMBFLG2_UNICODE ;
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > RequestFileName ,
searchName , PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > RequestFileName ,
searchName , PATH_MAX , nls_codepage ,
remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -5506,8 +5512,8 @@ SetEOFRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -5796,8 +5802,8 @@ SetTimesRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -5877,8 +5883,8 @@ SetAttrLgcyRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
ConvertToUCS ( ( __le16 * ) pSMB - > fileName , fileName ,
PATH_MAX , nls_codepage ) ;
ConvertToUTF16 ( ( __le16 * ) pSMB - > fileName , fileName ,
PATH_MAX , nls_codepage ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -6030,8 +6036,8 @@ setPermsRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -6123,8 +6129,8 @@ QAllEAsRetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
list_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , searchName ,
PATH_MAX , nls_codepage , remap ) ;
list_len + + ; /* trailing null */
list_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */
@ -6301,8 +6307,8 @@ SetEARetry:
if ( pSMB - > hdr . Flags2 & SMBFLG2_UNICODE ) {
name_len =
cifsConvertToUCS ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
cifsConvertToUTF16 ( ( __le16 * ) pSMB - > FileName , fileName ,
PATH_MAX , nls_codepage , remap ) ;
name_len + + ; /* trailing null */
name_len * = 2 ;
} else { /* BB improve the check for buffer overruns BB */