All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Clayton <chris2553-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
To: Sachin Prabhu <sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Linux CIFS mailing list
	<linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Jeff Layton <jlayton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
Subject: Re: [PATCH] Cleanup handling of NULL value passed for a mount option
Date: Tue, 10 Apr 2012 23:00:12 +0100	[thread overview]
Message-ID: <201204102300.12152.chris2553@googlemail.com> (raw)
In-Reply-To: <1334077947.2149.32.camel@localhost>

On Tuesday 10 April 2012 18:12:27 Sachin Prabhu wrote:
> Allow blank user= and ip= mount option. Also clean up redundant
> checks for NULL values since the token parser will not actually
> match mount options with NULL values unless explicitly specified.
>
> Signed-off-by: Sachin Prabhu <sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Reported-by: Chris Clayton <chris2553-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
>
> ---
>  fs/cifs/connect.c |   80
> ++++++++++++---------------------------------------- 1 files changed, 19
> insertions(+), 61 deletions(-)
>
> diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
> index d81e933..6a86f3d 100644
> --- a/fs/cifs/connect.c
> +++ b/fs/cifs/connect.c
> @@ -109,6 +109,8 @@ enum {
>
>  	/* Options which could be blank */
>  	Opt_blank_pass,
> +	Opt_blank_user,
> +	Opt_blank_ip,
>
>  	Opt_err
>  };
> @@ -183,11 +185,15 @@ static const match_table_t cifs_mount_option_tokens =
> { { Opt_wsize, "wsize=%s" },
>  	{ Opt_actimeo, "actimeo=%s" },
>
> +	{ Opt_blank_user, "user=" },
> +	{ Opt_blank_user, "username=" },
>  	{ Opt_user, "user=%s" },
>  	{ Opt_user, "username=%s" },
>  	{ Opt_blank_pass, "pass=" },
>  	{ Opt_pass, "pass=%s" },
>  	{ Opt_pass, "password=%s" },
> +	{ Opt_blank_ip, "ip=" },
> +	{ Opt_blank_ip, "addr=" },
>  	{ Opt_ip, "ip=%s" },
>  	{ Opt_ip, "addr=%s" },
>  	{ Opt_unc, "unc=%s" },
> @@ -1534,15 +1540,17 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname,
>
>  		/* String Arguments */
>
> +		case Opt_blank_user:
> +			/* null user, ie. anonymous authentication */
> +			vol->nullauth = 1;
> +			vol->username = NULL;
> +			break;
>  		case Opt_user:
>  			string = match_strdup(args);
>  			if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				/* null user, ie. anonymous authentication */
> -				vol->nullauth = 1;
> -			} else if (strnlen(string, MAX_USERNAME_SIZE) >
> +			if (strnlen(string, MAX_USERNAME_SIZE) >
>  							MAX_USERNAME_SIZE) {
>  				printk(KERN_WARNING "CIFS: username too long\n");
>  				goto cifs_parse_mount_err;
> @@ -1611,14 +1619,15 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, }
>  			vol->password[j] = '\0';
>  			break;
> +		case Opt_blank_ip:
> +			vol->UNCip = NULL;
> +			break;
>  		case Opt_ip:
>  			string = match_strdup(args);
>  			if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				vol->UNCip = NULL;
> -			} else if (strnlen(string, INET6_ADDRSTRLEN) >
> +			if (strnlen(string, INET6_ADDRSTRLEN) >
>  						INET6_ADDRSTRLEN) {
>  				printk(KERN_WARNING "CIFS: ip address "
>  						    "too long\n");
> @@ -1636,12 +1645,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: invalid path to "
> -						    "network resource\n");
> -				goto cifs_parse_mount_err;
> -			}
> -
>  			temp_len = strnlen(string, 300);
>  			if (temp_len  == 300) {
>  				printk(KERN_WARNING "CIFS: UNC name too long\n");
> @@ -1670,11 +1673,7 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: invalid domain"
> -						    " name\n");
> -				goto cifs_parse_mount_err;
> -			} else if (strnlen(string, 256) == 256) {
> +			if (strnlen(string, 256) == 256) {
>  				printk(KERN_WARNING "CIFS: domain name too"
>  						    " long\n");
>  				goto cifs_parse_mount_err;
> @@ -1693,11 +1692,7 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: srcaddr value not"
> -						    " specified\n");
> -				goto cifs_parse_mount_err;
> -			} else if (!cifs_convert_address(
> +			if (!cifs_convert_address(
>  					(struct sockaddr *)&vol->srcaddr,
>  					string, strlen(string))) {
>  				printk(KERN_WARNING "CIFS:  Could not parse"
> @@ -1710,11 +1705,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: Invalid path"
> -						    " prefix\n");
> -				goto cifs_parse_mount_err;
> -			}
>  			temp_len = strnlen(string, 1024);
>  			if (string[0] != '/')
>  				temp_len++; /* missing leading slash */
> @@ -1742,11 +1732,7 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: Invalid iocharset"
> -						    " specified\n");
> -				goto cifs_parse_mount_err;
> -			} else if (strnlen(string, 1024) >= 65) {
> +			if (strnlen(string, 1024) >= 65) {
>  				printk(KERN_WARNING "CIFS: iocharset name "
>  						    "too long.\n");
>  				goto cifs_parse_mount_err;
> @@ -1771,11 +1757,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: No socket option"
> -						    " specified\n");
> -				goto cifs_parse_mount_err;
> -			}
>  			if (strnicmp(string, "TCP_NODELAY", 11) == 0)
>  				vol->sockopt_tcp_nodelay = 1;
>  			break;
> @@ -1784,12 +1765,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: Invalid (empty)"
> -						    " netbiosname\n");
> -				break;
> -			}
> -
>  			memset(vol->source_rfc1001_name, 0x20,
>  				RFC1001_NAME_LEN);
>  			/*
> @@ -1817,11 +1792,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: Empty server"
> -					" netbiosname specified\n");
> -				break;
> -			}
>  			/* last byte, type, is 0x20 for servr type */
>  			memset(vol->target_rfc1001_name, 0x20,
>  				RFC1001_NAME_LEN_WITH_NULL);
> @@ -1848,12 +1818,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				cERROR(1, "no protocol version specified"
> -					  " after vers= mount option");
> -				goto cifs_parse_mount_err;
> -			}
> -
>  			if (strnicmp(string, "cifs", 4) == 0 ||
>  			    strnicmp(string, "1", 1) == 0) {
>  				/* This is the default */
> @@ -1868,12 +1832,6 @@ cifs_parse_mount_options(const char *mountdata,
> const char *devname, if (string == NULL)
>  				goto out_nomem;
>
> -			if (!*string) {
> -				printk(KERN_WARNING "CIFS: no security flavor"
> -						    " specified\n");
> -				break;
> -			}
> -
>  			if (cifs_parse_security_flavors(string, vol) != 0)
>  				goto cifs_parse_mount_err;
>  			break;

Works fine here, so:

Tested-by: Chris Clayton <chris2553-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>


-- 
The more I see, the more I know. The more I know, the less I understand. Changing Man - Paul Weller

  parent reply	other threads:[~2012-04-10 22:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-10  7:23 3.4.0-rc2+ - CIFS mount failure Chris Clayton
     [not found] ` <201204100823.24207.chris2553-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
2012-04-10  9:39   ` Sachin Prabhu
2012-04-10 11:16     ` Jeff Layton
     [not found]       ` <20120410071630.567d70cb-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-04-10 13:13         ` Chris Clayton
     [not found]           ` <201204101413.27748.chris2553-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
2012-04-10 13:28             ` Sachin Prabhu
2012-04-10 17:12               ` [PATCH] Cleanup handling of NULL value passed for a mount option Sachin Prabhu
2012-04-10 17:17                 ` Jeff Layton
2012-04-10 22:00                 ` Chris Clayton [this message]
2012-04-11  2:17                 ` Steve French
     [not found]                   ` <CAH2r5mtrYxLueLL9VDSWE2G+86ZDyqXaFdOJz0FkNp8J0OzEUQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-11 12:03                     ` Sachin Prabhu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201204102300.12152.chris2553@googlemail.com \
    --to=chris2553-gm/ye1e23mwn+bqq9rbeug@public.gmane.org \
    --cc=jlayton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.