2023-06-14 14:50:31

by Chenyuan Mi

[permalink] [raw]
Subject: [PATCH] nfsroot: Fix missing check for return value of strsep()

The strsep() function in root_nfs_parse_options() may return NULL
if argument 'incoming' is NULL. Since 'incoming' has Null check in
this function, it is also need to add Null check for return value
of strsep().

Found by our static analysis tool.

Signed-off-by: Chenyuan Mi <[email protected]>
---
fs/nfs/nfsroot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
index 620329b7e6ae..55c594dede9f 100644
--- a/fs/nfs/nfsroot.c
+++ b/fs/nfs/nfsroot.c
@@ -198,7 +198,7 @@ static int __init root_nfs_parse_options(char *incoming, char *exppath,
* Set the NFS remote path
*/
p = strsep(&incoming, ",");
- if (*p != '\0' && strcmp(p, "default") != 0)
+ if (p != NULL && *p != '\0' && strcmp(p, "default") != 0)
if (root_nfs_copy(exppath, p, exppathlen))
return -1;

--
2.17.1



2023-06-14 15:21:38

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] nfsroot: Fix missing check for return value of strsep()

On Wed, 2023-06-14 at 07:30 -0700, Chenyuan Mi wrote:
> [You don't often get email from [email protected]. Learn why this
> is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> The strsep() function in root_nfs_parse_options() may return NULL
> if argument 'incoming' is NULL. Since 'incoming' has Null check in
> this function, it is also need to add Null check for return value
>  of strsep().
>
> Found by our static analysis tool.
>
> Signed-off-by: Chenyuan Mi <[email protected]>
> ---
>  fs/nfs/nfsroot.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
> index 620329b7e6ae..55c594dede9f 100644
> --- a/fs/nfs/nfsroot.c
> +++ b/fs/nfs/nfsroot.c
> @@ -198,7 +198,7 @@ static int __init root_nfs_parse_options(char
> *incoming, char *exppath,
>          * Set the NFS remote path
>          */
>         p = strsep(&incoming, ",");
> -       if (*p != '\0' && strcmp(p, "default") != 0)
> +       if (p != NULL && *p != '\0' && strcmp(p, "default") != 0)
>                 if (root_nfs_copy(exppath, p, exppathlen))
>                         return -1;
>

Huh? root_nfs_parse_options() is called from exactly two callsites, and
in both cases 'incoming' is guaranteed to be non-NULL.

NACKed
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
[email protected]


2023-06-14 15:48:37

by Benjamin Coddington

[permalink] [raw]
Subject: Re: [PATCH] nfsroot: Fix missing check for return value of strsep()

On 14 Jun 2023, at 10:30, Chenyuan Mi wrote:

> The strsep() function in root_nfs_parse_options() may return NULL
> if argument 'incoming' is NULL. Since 'incoming' has Null check in
> this function, it is also need to add Null check for return value
> of strsep().

Incoming is checked to be non-NULL *before* sending it to strsep() here.

> Found by our static analysis tool.

The tool must be noticing that it is checked for NULL *after* strsep(),
which wouldn't matter to strsep() at all.

Ben