[linux-cifs-client] Null-Terminating bcc_ptr wrong?
Christopher R. Hertel
crh at ubiqx.mn.org
Fri Apr 10 14:52:34 GMT 2009
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 -)-----
Peter Hudec wrote:
> Hello,
>
> I'm regarding the bug with allocating to little memory for the buffer
> when using UTF-8 encoding in connect.c in function CIFSTCon.
>
> tcon->nativeFileSystem =
> kzalloc(2 * (length + 1), GFP_KERNEL);
> if (tcon->nativeFileSystem)
> cifs_strfromUCS_le(
> tcon->nativeFileSystem,
> (__le16 *) bcc_ptr,
> length, nls_codepage);
> bcc_ptr += 2 * length;
> bcc_ptr[0] = 0; /* null terminate the string */
> bcc_ptr[1] = 0;
> bcc_ptr += 2;
>
> At the end of this code snippet the bcc_ptr is moved to the end position
> an a zero word is added.
> Shouldn't this be done with the tcon->nativeFileSystem buffer instead?
> The bcc_ptr should be null-terminated already, as this buffer is the
> source of the copying operation.
> The number of characters is determined using
> length = UniStrnlen((wchar_t *) bcc_ptr, 512);
> what means that bcc_ptr must be null-terminated.
> To null-terminate tcon->nativeFileSystem, there must be determined how
> long the string is (in bytes, not characters) and which encoding it uses
> (UTF-8 or 1-byte-long codepages). Then the codepage/encoding-specific
> null character must be added (for UTF-8 or ISO 8859 that should be just
> 0, for UTF-16 two 0 bytes).
>
>
> Peter
> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client
--
"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/ -)----- crh at ubiqx.mn.org
OnLineBook -- http://ubiqx.org/cifs/ -)----- crh at ubiqx.org
More information about the linux-cifs-client
mailing list