X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fstropts.c;fp=utils%2Fmount%2Fstropts.c;h=9b4197b7f93d812958da2b4eaffd73cba5600836;hp=0aa9a7586dbe6eadf877450e715844907a9aa945;hb=329c63dd7e4e76fc66e8a6058d95c59974ad7db1;hpb=fa7c7b6e590367a2b1dc2ba2d9f5f4500ff29ae3 diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index 0aa9a75..9b4197b 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -680,6 +680,7 @@ static int nfs_do_mount_v4(struct nfsmount_info *mi, { struct mount_options *options = po_dup(mi->options); int result = 0; + char *extra_opts = NULL; if (!options) { errno = ENOMEM; @@ -715,20 +716,26 @@ static int nfs_do_mount_v4(struct nfsmount_info *mi, goto out_fail; } - /* - * Update option string to be recorded in /etc/mtab. - */ - if (po_join(options, mi->extra_opts) == PO_FAILED) { + if (po_join(options, &extra_opts) == PO_FAILED) { errno = ENOMEM; goto out_fail; } if (verbose) printf(_("%s: trying text-based options '%s'\n"), - progname, *mi->extra_opts); + progname, extra_opts); result = nfs_sys_mount(mi, options); + /* + * If success, update option string to be recorded in /etc/mtab. + */ + if (result) { + free(*mi->extra_opts); + *mi->extra_opts = extra_opts; + } else + free(extra_opts); + out_fail: po_destroy(options); return result;