]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mount/nfsumount.c
umount.nfs - more strict checks on command line args.
[nfs-utils.git] / utils / mount / nfsumount.c
index 1d10cc689b5c46b0d4d55838a389cd39be5fb52b..e101105268d3bdd9bd42a49ca3649b3b17250383 100644 (file)
@@ -252,7 +252,7 @@ int _nfsumount(const char *spec, char *opts)
                goto out_bad;
        return nfs_call_umount(&mnt_server, &dirname);
  out_bad:
-       printf("%s: %s: not found or not mounted\n", progname, spec);
+       fprintf(stderr, "%s: %s: not found or not mounted\n", progname, spec);
        return 0;
 }
 
@@ -313,6 +313,10 @@ int nfsumount(int argc, char *argv[])
                        return 0;
                }
        }
+       if (optind != argc) {
+               umount_usage();
+               return 0;
+       }
        
        if (spec == NULL || (*spec != '/' && strchr(spec,':') == NULL)) {
                printf(_("umount: %s: not found\n"), spec);
@@ -326,6 +330,13 @@ int nfsumount(int argc, char *argv[])
        if (!mc && verbose)
                printf(_("Could not find %s in mtab\n"), spec);
 
+       if (mc && strcmp(mc->m.mnt_type, "nfs") != 0 &&
+           strcmp(mc->m.mnt_type, "nfs4") != 0) {
+               fprintf(stderr, "umount.nfs: %s on %s it not an nfs filesystem\n",
+                       mc->m.mnt_fsname, mc->m.mnt_dir);
+               exit(1);
+       }
+
        if (getuid() != 0) {
                /* only permitted if "user=" or "users" is in mount options */
                if (!mc) {