summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--utils/mount/network.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/utils/mount/network.c b/utils/mount/network.c
index acf9a2e..8ab5be8 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -100,7 +100,6 @@ static const char *nfs_version_opttbl[] = {
"v4",
"vers",
"nfsvers",
- "minorversion",
NULL,
};
@@ -1292,17 +1291,19 @@ nfs_nfs_version(char *type, struct mount_options *options, struct nfs_version *v
if (!version_val)
goto ret_error;
- if (!(version->major = strtol(version_val, &cptr, 10)))
+ version->major = strtol(version_val, &cptr, 10);
+ if (cptr == version_val || (*cptr && *cptr != '.'))
goto ret_error;
-
- if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
+ if (version->major == 4 && *cptr != '.' &&
+ (version_val = po_get(options, "minorversion")) != NULL) {
+ version->minor = strtol(version_val, &cptr, 10);
+ i = -1;
+ if (*cptr)
+ goto ret_error;
version->v_mode = V_SPECIFIC;
- version->minor = version->major;
- version->major = 4;
} else if (version->major < 4)
version->v_mode = V_SPECIFIC;
-
- if (*cptr == '.') {
+ else if (*cptr == '.') {
version_val = ++cptr;
if (!(version->minor = strtol(version_val, &cptr, 10)) && cptr == version_val)
goto ret_error;
@@ -1316,7 +1317,10 @@ nfs_nfs_version(char *type, struct mount_options *options, struct nfs_version *v
return 1;
ret_error:
- if (i <= 2 ) {
+ if (i < 0) {
+ nfs_error(_("%s: parsing error on 'minorversion=' option"),
+ progname);
+ } else if (i <= 2 ) {
nfs_error(_("%s: parsing error on 'v' option"),
progname);
} else if (i == 3 ) {