From f01b3a157676ead4b8817e24740518b19b616474 Mon Sep 17 00:00:00 2001 From: Steve French Date: Tue, 6 Apr 2004 12:57:41 +0000 Subject: r77: Fix path canonicalization of the mount target path and help text display in the cifs mount helper (This used to be commit 69861f168c6be90b4e7f47e29006b2d60d442ffd) --- source3/client/mount.cifs.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/source3/client/mount.cifs.c b/source3/client/mount.cifs.c index c31a9d66b3..29689243b2 100755 --- a/source3/client/mount.cifs.c +++ b/source3/client/mount.cifs.c @@ -74,7 +74,13 @@ static void mount_cifs_usage(void) { printf("\nUsage: %s -o \n", thisprogram); printf("\nMount the remote target, specified as a UNC name,"); - printf(" to a local directory.\n"); + printf(" to a local directory.\n\nOptions:\n"); + printf("\tuser=\n\tpass=\n\tdom=\n"); + printf("\nOther less commonly used options are described in the manual page"); + printf("\n\tman 8 mount.cifs\n"); + printf("\nTo display the version number of the mount helper:"); + printf("\n\t%s -V\n",thisprogram); + if(mountpassword) { memset(mountpassword,0,64); free(mountpassword); @@ -95,7 +101,7 @@ static char * getusername(void) { char * parse_cifs_url(char * unc_name) { - printf("\ncifs url %s\n",unc_name); + printf("\nMounting cifs URL not implemented yet. Attempt to mount %s\n",unc_name); return NULL; } @@ -590,6 +596,7 @@ int main(int argc, char ** argv) char * uuid = NULL; char * mountpoint; char * options; + char * resolved_path; char * temp; int rc; int rsize = 0; @@ -730,13 +737,22 @@ int main(int argc, char ** argv) } ipaddr = parse_server(share_name); + + if(ipaddr == NULL) + return -1; if (orgoptions && parse_options(orgoptions, &flags)) - return 1; + return -1; /* BB save off path and pop after mount returns? */ - /* BB canonicalize the path in argv[1]? */ - + resolved_path = malloc(PATH_MAX+1); + if(resolved_path) { + /* Note that if we can not canonicalize the name, we get + another chance to see if it is valid when we chdir to it */ + if (realpath(mountpoint, resolved_path)) { + mountpoint = resolved_path; + } + } if(chdir(mountpoint)) { printf("mount error: can not change directory into mount target %s\n",mountpoint); return -1; @@ -890,6 +906,10 @@ int main(int argc, char ** argv) memset(orgoptions,0,orgoptlen); free(orgoptions); } + if(resolved_path) { + free(resolved_path); + } + return 0; } -- cgit