Re: Null-Terminating bcc_ptr wrong?

"Christopher R. Hertel" <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
Peter Hudec wrote:
> Christopher R. Hertel wrote:
>> This is a tangent, but...
>>
>> It shouldn't be UTF-8.  CIFS (the protocol) supports UCS-16LE Unicode
>> encoding or 8-bit extended ASCII (OEM charset).
>>
>> Chris -)-----
> The protocol SMB/CIFS uses UCS-2LE (to be correct), but the conversion
> may be done to UTF-8.

So, I double checked.  :)

You are correct that there is no "UCS-16LE".  Ooops.  What I meant to write
was UTF-16LE.  According to current docs ([MS-UCODEREF]), Microsoft supports
full UTF-16 as opposed to UCS-2.

> The UCS-2LE-string from the packet can grow up to 4 bytes/character or
> twice as big as UCS-2LE (it can - it does not necessarily do so!)

UCS-2 does not support surrogate pairs, so the encoding is actually fixed at
16 bits per code point.  UTF-16 does support surrogate pairs, which is where
the expansion becomes possible.

> To determine the size of the target buffer without calculating it the
> correct line should be:
> 
> tcon->nativeFileSystem = kzalloc(4 * (length + 1), GFP_KERNEL);

That'd be the safe way, though the terminating nul would still be only 2
bytes so you could subtract two from the total.  ((4 * (length + 1)) - 2)

> tcon->nativeFileSystem is a buffer in the specific codepage. If it is
> ISO 5598-1, e.g., it is fine, because it needs 8 bit (1 byte) per
> character. If it is UTF-8, and only consists of ASCII (like "NTFS",
> "FAT32"), it is fine too and only needs one byte per character.
> But in a worse case (is there any file system containing special
> characters? I don't know any) the buffer can grow up to 4 bytes per
> character.

I know of one proposed file system that has a name that would require
Unicode (and probably four-byte encoding).  It's only a dream at this point,
however, so it's not relevant.

Fun.

Chris -)-----

-- 
"Implementing CIFS - the Common Internet FileSystem" ISBN: 013047116X
Samba Team -- http://www.samba.org/     -)-----   Christopher R. Hertel
jCIFS Team -- http://jcifs.samba.org/   -)-----   ubiqx development, uninq.
ubiqx Team -- http://www.ubiqx.org/     -)-----   [email protected]
OnLineBook -- http://ubiqx.org/cifs/    -)-----   [email protected]
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.