Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-updates-src > by-pkgid > 06f7bfb68c26fb4465e5af609592abd4 > files > 5

cifs-utils-4.8.1-1.3.mga1.src.rpm

From: Jeff Layton <jlayton@samba.org>
Date: Fri, 15 Apr 2011 11:49:51 +0000 (-0400)
Subject: mount.cifs: fix test for strtoul failure in mount.cifs
X-Git-Tag: cifs-utils-5.0~12
X-Git-Url: https://git.samba.org/?p=cifs-utils.git;a=commitdiff_plain;h=00e7fcbe9f519a8251707321eadd34cf156447e5

mount.cifs: fix test for strtoul failure in mount.cifs

It currently test to see if errno == -EINVAL and whether the endptr
is '\0'. That's not correct however. What we really want it to do is
check to see if any error occurred by setting errno to 0 before the
conversion. If one did, then try to treat the value as a name.

Also fix a bogus compiler warning about cruid being uninitialized.

Reported-by: Jian Li <jiali@redhat.com>
Signed-off-by: Jeff Layton <jlayton@samba.org>
---

diff --git a/mount.cifs.c b/mount.cifs.c
index 29b0d4c..9d7e107 100644
--- a/mount.cifs.c
+++ b/mount.cifs.c
@@ -861,7 +861,7 @@ parse_options(const char *data, struct parsed_mount_info *parsed_info)
 	int got_uid = 0;
 	int got_cruid = 0;
 	int got_gid = 0;
-	uid_t uid, cruid;
+	uid_t uid, cruid = 0;
 	gid_t gid;
 	char *ep;
 	struct passwd *pw;
@@ -1031,8 +1031,9 @@ parse_options(const char *data, struct parsed_mount_info *parsed_info)
 				goto nocopy;
 
 			got_uid = 1;
+			errno = 0;
 			uid = strtoul(value, &ep, 10);
-			if (errno != EINVAL && *ep == '\0')
+			if (errno == 0)
 				goto nocopy;
 
 			pw = getpwnam(value);
@@ -1049,8 +1050,9 @@ parse_options(const char *data, struct parsed_mount_info *parsed_info)
 				goto nocopy;
 
 			got_cruid = 1;
+			errno = 0;
 			cruid = strtoul(value, &ep, 10);
-			if (errno != EINVAL && *ep == '\0')
+			if (errno == 0)
 				goto nocopy;
 
 			pw = getpwnam(value);
@@ -1066,8 +1068,9 @@ parse_options(const char *data, struct parsed_mount_info *parsed_info)
 				goto nocopy;
 
 			got_gid = 1;
+			errno = 0;
 			gid = strtoul(value, &ep, 10);
-			if (errno != EINVAL && *ep == '\0')
+			if (errno == 0)
 				goto nocopy;
 
 			gr = getgrnam(value);