[linux-cifs-client] Re: patch to mount.cifs to allow it to handle USER env variable

Jeff Layton jlayton at redhat.com
Thu Dec 4 16:46:47 GMT 2008


On Thu, 4 Dec 2008 10:22:21 -0600
"Steve French" <smfrench at gmail.com> wrote:

> Although the USER env variable is usually set to the same thing as
> getuid returns, the user may want to override it (and mount.cifs man
> page, like smbfs, says it is supposed to honor the ENV variable $USER.
>  Patch follows to fix that:
> 
> diff --git a/source/client/mount.cifs.c b/source/client/mount.cifs.c
> index 3b56e5f..8e4d521 100644
> --- a/source/client/mount.cifs.c
> +++ b/source/client/mount.cifs.c
> @@ -1269,7 +1269,13 @@ int main(int argc, char ** argv)
>         }
> 
>         if(got_user == 0) {
> -               user_name = getusername();
> +               /* Note that the password will not be retrieved from the
> +                  USER env variable (ie user%password form) as there is
> +                  already a PASSWD environment varaible */
> +               if (getenv("USER"))
> +                       user_name = strdup(getenv("USER"));
> +               if (user_name == NULL)
> +                       user_name = getusername();
>                 got_user = 1;
>         }
>

Why not put all of that logic in getusername() instead? main() is
awfully big, and it would be nice to put that functionality in
the helper function instead.

Also, there are 2 call sites for getusername() in the sources I'm
looking at. If you put the new code in getusername() itself then
the second site gets fixed for "free"...

-- 
Jeff Layton <jlayton at redhat.com>


More information about the linux-cifs-client mailing list