Re: [PATCH] cifs: Fix insufficient memory allocation for nativeFileSystem field
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 07 Apr 2009 18:45:46 +0530 Suresh Jayaraman <[email protected]> wrote: > Do we still need this conversion again? > I know this isn't a "real" patch submission yet, but some comments below... > > diff --git a/fs/cifs/cifs_unicode.h b/fs/cifs/cifs_unicode.h > index 14eb9a2..0396bdc 100644 > --- a/fs/cifs/cifs_unicode.h > +++ b/fs/cifs/cifs_unicode.h > @@ -159,6 +159,23 @@ UniStrnlen(const wchar_t *ucs1, int maxlen) > } > > /* > + * UniStrnlenBytes: Return the length in bytes of a UTF-8 string > + */ > +static inline size_t > +UniStrnlenBytes(const unsigned char *str, int maxlen) > +{ > + size_t nbytes = 0; > + wchar_t *uni; ^^^^^ I think you need to allocate actual storage for the character here. > + > + while (*str++) { > + /* convert each char, find its length and add to nbytes */ > + if (char2uni(str, maxlen, uni) > 0) > + nbytes += strnlen(uni, NLS_MAX_CHARSET_SIZE); "uni" is a ptr to a wchar_t, but you're treating it as a string. There's no guarantee that it'll be null-terminated. I might be mistaken, but doesn't char2uni return the length of the converted character in bytes? Tallying up the return from those is probably the thing to do. > + } > + return nbytes; > +} > + > +/* -- Jeff Layton <[email protected]>