Re: [PATCH 1/2] cifs: fix buffer size for tcon->nativeFileSystem field

Dave Kleikamp <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
On Thu, 2009-04-16 at 11:21 -0400, Jeff Layton wrote:
> The buffer for this was resized recently to fix a bug. It's still
> possible however that a malicious server could overflow this field
> by sending characters in it that are >2 bytes in the local charset.
> Double the size of the buffer to account for this possibility.
> 
> Also get rid of some really strange and seemingly pointless NULL
> termination. It's NULL terminating the string in the source buffer,
> but by the time that happens, we've already copied the string.
> 
> Signed-off-by: Jeff Layton <[email protected]>
> ---
>  fs/cifs/connect.c |    7 ++-----
>  1 files changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
> index 01e280c..1a93604 100644
> --- a/fs/cifs/connect.c
> +++ b/fs/cifs/connect.c
> @@ -3756,16 +3756,13 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
>  			    BCC(smb_buffer_response)) {
>  				kfree(tcon->nativeFileSystem);
>  				tcon->nativeFileSystem =
> -				    kzalloc(2*(length + 1), GFP_KERNEL);
> +				    kzalloc((4 * length) + 2, 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;
> +				bcc_ptr += (2 * length) + 2;

What's the point of updating bcc_ptr here?  It's not accurate anyway.
The correct thing would be:

bcc_ptr += cifs_strfromUCS_le(... );

but bcc_ptr isn't used again, so there's no point.

Shaggy
-- 
David Kleikamp
IBM Linux Technology Center
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.