[linux-cifs-client] [PATCH 00/12] cifs: fix string conversions from wire format to local charset (try #3)

Suresh Jayaraman sjayaraman at suse.de
Thu Apr 30 10:30:09 GMT 2009


Jeff Layton wrote:
> This is the third set of patches for this problem. The main changes
> from the last set are some minor renames of some of the functions,
> some fleshing out of comments and a fix for an endianness problem
> that the earlier set introduced to CIFSTCon.
> 
> This patchset is intended to fix the string conversions in cifs that
> convert strings from "wire-format" (little-endian UTF-16) to whatever
> character set is in use on the client.

This patchset looks a lot cleaner, better and more comprehensive. I
spent some time and have looked at all the patches and I don't see any
major issues apart from a few minor comments (which I have sent as reply
to the patch itself)

Please add my Acked-by to other patches as well.
Acked-by: Suresh Jayaraman <sjayaraman at suse.de>

Steve: if you plan not to take some of these that are not directly
string conversion related (e.g. 08/12 11/12), I think they might result
in build warnings as there is a change in CIFSSMBUnixQuerySymLink()
prototype and in some cases build errors as some helpers used by NTLMSSP
code have been removed in previous patches.

Thanks,

> This patch is built upon work by Suresh Jayaraman. This shouldn't be
> taken as a comment on his work -- he did a fine job on the earlier
> patchsets. It became clear to me as I was reviewing them though that
> there were fundamental problems with the existing code that couldn't
> really be remedied without a more invasive set:
> 
> 1) When converting into a destination buffer, the size of that buffer
> isn't checked in a clear and consistent fashion. This patchset attempts
> to remedy that by providing functions that do this.
> 
> 2) In some functions there are clear limits on how many wide characters
> the functions should walk. The numbers passed to them don't always
> reflect the amount of data in the actual packet though, so it's possible
> for these functions to walk off of the end of the source buffer. This
> set attempts to fix that by making the callers of the new functions
> consistently pass in a max size the reflects the size of the data left
> in the response.
> 
> 3) The function interfaces are inconsistent and use wide characters for
> some lengths and bytes for others. This means that we often have to
> convert between different length units and leads to more confusing code.
> This patchset tries to settle on using lengths in bytes for most
> interfaces since that is more useful when allocating buffers and such.
> 
> 4) There are a lot of similar functions that could be consolidated. This
> set does that where it makes sense.
> 
> There are a number of other bugs that are fixed in this. It also removes
> some dead and broken code.
> 
> Comments and suggestions appreciated...
> 
> Jeff Layton (12):
>   nls: add a nls_nullsize inline
>   cifs: move #defines for mapchars into cifs_unicode.h
>   cifs: add replacement for cifs_strtoUCS_le called cifs_from_ucs2
>   cifs: add new function to get unicode string length in bytes
>   cifs: rename cifs_strlcpy_to_host and make it use new functions
>   cifs: convert CIFSTCon to use new unicode helper functions
>   cifs: fix session setup unicode string saving to use new unicode
>     helpers
>   cifs: remove cifs_readlink and CIFSSMBQueryReparseLinkInfo
>   cifs: change CIFSSMBUnixQuerySymLink to use new helpers
>   cifs: change cifs_get_name_from_search_buf to use new unicode helper
>   cifs: remove legacy NTLMSSP code
>   cifs: remove cifs_strfromUCS_le
> 
>  fs/cifs/cifs_unicode.c |  201 ++++++++-
>  fs/cifs/cifs_unicode.h |   20 +-
>  fs/cifs/cifsfs.h       |    2 -
>  fs/cifs/cifspdu.h      |   11 -
>  fs/cifs/cifsproto.h    |    5 +-
>  fs/cifs/cifssmb.c      |  216 +--------
>  fs/cifs/connect.c      | 1150 +-----------------------------------------------
>  fs/cifs/link.c         |  114 +-----
>  fs/cifs/misc.c         |   71 ---
>  fs/cifs/readdir.c      |   26 +-
>  fs/cifs/sess.c         |   80 +---
>  include/linux/nls.h    |   19 +
>  12 files changed, 299 insertions(+), 1616 deletions(-)
> 
> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client


-- 
Suresh Jayaraman


More information about the linux-cifs-client mailing list