[linux-cifs-client] [PATCH] cifs: Fix insufficient memory
allocation for nativeFileSystem field
simo
idra at samba.org
Mon Apr 6 14:30:18 GMT 2009
On Mon, 2009-04-06 at 10:08 -0400, Jeff Layton wrote:
> On Mon, 06 Apr 2009 14:02:25 +0000
> simo <idra at samba.org> wrote:
>
> > On Mon, 2009-04-06 at 09:22 -0400, Jeff Layton wrote:
> > > > True. Seems I was influenced by a comment in fs/cifs/sess.c
> > > >
> > > > 313 /* UTF-8 string will not grow more than four times as
> > > big as
> > > > UCS-16 */
> > > >
> > >
> > > That looks like that's wrong (or at least potentially so). AFAICT,
> > > UTF-8
> > > allows up to 6 bytes per character. I suppose that it's possible that
> > > none of the characters allowed in UCS-16 will ever translate to a
> > > character that's more than 4 bytes, but I'd like to see that confirmed
> > > before we depend on it.
> >
> > I wonder whats UCS-16 tho, UCS-16 does not exist :)
> >
> > It may be either UTF16 or UCS2.
> > Both these charsets have a base length of 2 bytes per character. UCS2 is
> > limited to 65535 values, while UTF-16 is a multi-word charset.
> >
> > If the comment above is to be read as "UTF-8 string will not grow more
> > than four times as big as UCS-2/UTF-16" then what it is saying is that
> > at maximum an UTF-8 chars can be 4 words (or 8 bytes long).
> > IIRC UTF-8 chars length is maximum 6 bytes, so an 8 byte per char max
> > estimate seem correct.
> >
> > If "length" in the code was the length in bytes, and not the number of
> > characters, of an UCS-2/UTF-16 string than 4*length should, indeed be
> > long enough.
> >
>
> Ahh, you're correct. I guess I'm accustomed to thinking about lengths in
> bytes. I guess though this means that 4*length is allocating too
> much...wouldn't 3*length then be right (assuming NULL termination is
> also accounted for) ?
>
> Regardless of the math, I'd like to see all of this moved into some
> nice, well commented helper functions instead of being open-coded all
> over the place. It's just too easy to get this stuff wrong. Let's solve
> this in a way that makes it easier in the future.
Yes, this is the way to go.
Simo.
--
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Principal Software Engineer at Red Hat, Inc. <simo at redhat.com>
More information about the linux-cifs-client
mailing list