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
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox