umount.nfs - more strict checks on command line args.
authorNeil Brown <neilb@suse.de>
Tue, 20 Mar 2007 01:50:04 +0000 (12:50 +1100)
committerNeil Brown <neilb@suse.de>
Tue, 20 Mar 2007 01:50:04 +0000 (12:50 +1100)
Reject if there are non-flag args,
Reject if the filesystem is not an NFS filesystem.

utils/mount/nfsumount.c

index 1decf07..e101105 100644 (file)
@@ -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) {