All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sachin Prabhu <sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Dan Carpenter <dan.carpenter-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org
Subject: re: cifs: use standard token parser for mount options
Date: Wed, 28 Mar 2012 12:13:01 +0100	[thread overview]
Message-ID: <1332933181.2144.11.camel@localhost> (raw)
In-Reply-To: <20120328104541.GC29022-mgFCXtclrQlZLf2FXnZxJA@public.gmane.org>

Hello Dan, 

You are right.

On Wed, 2012-03-28 at 13:45 +0300, Dan Carpenter wrote:
> Hello Sachin Prabhu,
> 
> This is a semi-automatic email about new static checker warnings.
> 
> The patch 8830d7e07a5e: "cifs: use standard token parser for mount 
> options" from Mar 23, 2012, leads to the following Smatch complaint:
> 
> fs/cifs/connect.c:1607 cifs_parse_mount_options()
> 	 error: we previously assumed 'value' could be null (see line 1568)
> 
> fs/cifs/connect.c
>   1567				value = strchr(data, '=');
>   1568				if (value != NULL)
>                                     ^^^^^^^^^^^^^
> Check.

static const match_table_t cifs_mount_option_tokens = {
..
        { Opt_pass, "pass=%s" },
        { Opt_pass, "password=%s" },
..
^^^ The parser will only match Opt_pass if the token passed contains a
'=' character so value cannot be NULL. That check for NULL is
unnecessary and shouldn't be there. This is otherwise harmless.

This is an artifact of the old code which was backported. Opt_pass
needed special handling to allow it to process password with ','
characters in them. This bit of code was at top of the while loop and
was used to parse the values passed with the mount option. This was set
to point to the value in case the mount option was passed with a value
or set to NULL in case it was parsing mount options which didn't pass
any values. 
In this case, the Opt_pass will be called only when it contains a value.
The case where a blank password was set is handled separately with
Opt_blank_pass.

> 
>   1569					*value++ = '\0';
>   1570	
>   1571				/* Set tmp_end to end of the string */
>   1572				tmp_end = (char *) value + strlen(value);
>                                                                   ^^^^^
> We can't run strlen() on NULL pointers.
> 
>   1573	
>   1574				/* Check if following character is the deliminator
> 
> regards,
> dan carpenter

Sachin Prabhu

  parent reply	other threads:[~2012-03-28 11:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-28 10:45 cifs: use standard token parser for mount options Dan Carpenter
     [not found] ` <20120328104541.GC29022-mgFCXtclrQlZLf2FXnZxJA@public.gmane.org>
2012-03-28 11:13   ` Sachin Prabhu [this message]
2012-03-28 11:31     ` Dan Carpenter
2012-03-28 17:07       ` [PATCH] Remove unnecessary check for NULL in password parser Sachin Prabhu
2012-03-28 17:23         ` Jeff Layton

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=1332933181.2144.11.camel@localhost \
    --to=sprabhu-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=dan.carpenter-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@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.