Re: [PATCH 1/3] cifs: Introduce helper to compute length of nls string in bytes

Shirish Pargaonkar <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
On Thu, Apr 23, 2009 at 12:56 AM, Jeff Layton <[email protected]> wrote:
> On Thu, 23 Apr 2009 02:49:21 +0200
> Günter Kukkukk <[email protected]> wrote:
>
>> just some further notes.
>> With "it's heavily used" i didn't mean the number of callers using this
>> function (only 1 in readdir.c) - i meant "the number of times" cifs_convertUCSpath()
>> is called in daily usage.... (readdir results)
>>
>> The current focus was mostly on cifs_strfromUCS_le() - but the _same_ applies
>> to cifs_convertUCSpath()!
>>
>> See the following code snippet:
>>
>> readdir.c --> static int cifs_get_name_from_search_buf()
>> ....
>>
>>       if (unicode) {
>>               /* BB fixme - test with long names */
>>               /* Note converted filename can be longer than in unicode */
>>               if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR)
>>                       pqst->len = cifs_convertUCSpath((char *)pqst->name,
>>                                       (__le16 *)filename, len/2, nlt);
>>               else
>>                       pqst->len = cifs_strfromUCS_le((char *)pqst->name,
>>                                       (__le16 *)filename, len/2, nlt);
>>
>> ....
>
> I see what you mean. Good catch. That function also has broken buffer
> length checking logic too.
>
> This patch is only compile-tested, but it should fix those problems. In
> the long run, we probably need to make all of these functions take an
> argument with the length of the destination buffer.
>
> Let's plan that overhaul after Suresh's latest set goes in though.
>
> --
> Jeff Layton <[email protected]>
>
> _______________________________________________
> linux-cifs-client mailing list
> [email protected]
> https://lists.samba.org/mailman/listinfo/linux-cifs-client
>
>

A general question, the functions such as cifs_strtoUCS call uni2char
which assumes UTF-8 translation format.
If one of the characaters being encoded happens to be 6 bytes long,
will a SMB/CIFS server be able
to handle that i.e. if it is expecting a UCS-2LE encoding, thus a two
byte encoded value, (how) would it handle
6 byte encoded value!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.