summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2007-03-20 12:50:04 +1100
committerNeil Brown <neilb@suse.de>2007-03-20 12:50:04 +1100
commit4bc447f758ee4d64706b990ac68cb766dbff113c (patch)
treefea2dd1b4b588e104ae2d95f6ba5efaa5919bced
parent44a3727a3243e674a1f1fdad5cbbc639aa25d01c (diff)
downloadnfs-utils-4bc447f758ee4d64706b990ac68cb766dbff113c.tar.gz
nfs-utils-4bc447f758ee4d64706b990ac68cb766dbff113c.tar.xz
nfs-utils-4bc447f758ee4d64706b990ac68cb766dbff113c.zip
umount.nfs - more strict checks on command line args.
Reject if there are non-flag args, Reject if the filesystem is not an NFS filesystem.
-rw-r--r--utils/mount/nfsumount.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/utils/mount/nfsumount.c b/utils/mount/nfsumount.c
index 1decf07..e101105 100644
--- a/utils/mount/nfsumount.c
+++ b/utils/mount/nfsumount.c
@@ -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) {