X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fnfsumount.c;h=f81db14e4d43e53ddebb7af98d73be4048ac7956;hp=4b2e53054b83ed515ae5990e88a584d364e2d117;hb=6e3fa0e103a494a37cf3a4f9199516923928ab31;hpb=bfa1df2e24b7f8c7fee299049a6ee36e1262dacd diff --git a/utils/mount/nfsumount.c b/utils/mount/nfsumount.c index 4b2e530..f81db14 100644 --- a/utils/mount/nfsumount.c +++ b/utils/mount/nfsumount.c @@ -174,7 +174,10 @@ static int nfs_umount_do_umnt(struct mount_options *options, socklen_t salen = sizeof(address); struct pmap nfs_pmap, mnt_pmap; - nfs_options2pmap(options, &nfs_pmap, &mnt_pmap); + if (!nfs_options2pmap(options, &nfs_pmap, &mnt_pmap)) { + nfs_error(_("%s: bad mount options"), progname); + return EX_FAIL; + } *hostname = nfs_umount_hostname(options, *hostname); if (!*hostname) { @@ -182,14 +185,15 @@ static int nfs_umount_do_umnt(struct mount_options *options, return EX_FAIL; } - if (nfs_name_to_address(*hostname, sap, &salen)) { - if (nfs_advise_umount(sap, salen, &mnt_pmap, dirname) != 0) - return EX_SUCCESS; - else - nfs_error(_("%s: Server failed to unmount '%s:%s'"), - progname, *hostname, *dirname); - } - return EX_FAIL; + if (nfs_name_to_address(*hostname, sap, &salen) == 0) + /* nfs_name_to_address reports any errors */ + return EX_FAIL; + + if (nfs_advise_umount(sap, salen, &mnt_pmap, dirname) == 0) + /* nfs_advise_umount reports any errors */ + return EX_FAIL; + + return EX_SUCCESS; } /* @@ -332,7 +336,7 @@ int nfsumount(int argc, char *argv[]) char *opt = hasmntopt(&mc->m, "user"); struct passwd *pw; char *comma; - int len; + size_t len; if (!opt) goto only_root; if (opt[4] != '=')