Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jun 2010 10:37:21 +0200
From:      Dimitry Andric <dimitry@andric.com>
To:        Max Laier <max@love2party.net>
Cc:        freebsd-current@freebsd.org
Subject:   Re: [patch] Misc warnings found by clang.
Message-ID:  <4C173BC1.7020808@andric.com>
In-Reply-To: <201006150008.14124.max@love2party.net>
References:  <EBFB6DD0-2517-4623-9153-4CBC93A8A0A9@gmail.com> <201006150008.14124.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------070809050808050201010205
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

On 2010-06-15 00:08, Max Laier wrote:
> I'm not sure about the intention behind the len assignements in libugidfw - 
> might be just a leftover - but if the idea is to teach a model that "we 
> generally care about the return value of snprintf()", a void cast might be the 
> more protable solution.

These specific snprintf() calls all occur just before returning an
error, so checking the return value is quite useless (unless one wanted
to output some sort of overflow warning right there).

Moreover, all calls to snprintf() in lib/libugidfw/ugidfw.c that do
check the return value are incorrect in two ways:
- The return value is stored in a size_t, while snprintf() returns an
  int.  Thus all the checks "ret < 0" become bogus.
- The idiom used everywhere is:
    len = snprintf(cur, left, ...);
    if (len < 0 || len > left)
            goto truncated;
  which is wrong; the second check should be "len >= left" instead.

Please review the attached patch which fixes those problems too.

--------------070809050808050201010205
Content-Type: text/plain;
 name="warnfix-ugidfw.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="warnfix-ugidfw.diff"

Index: lib/libugidfw/ugidfw.c
===================================================================
--- lib/libugidfw/ugidfw.c	(revision 209192)
+++ lib/libugidfw/ugidfw.c	(working copy)
@@ -63,22 +63,22 @@
 	struct passwd *pwd;
 	struct statfs *mntbuf;
 	char *cur, type[sizeof(rule->mbr_object.mbo_type) * CHAR_BIT + 1];
-	size_t left, len;
-	int anymode, unknownmode, truncated, numfs, i, notdone;
+	size_t left;
+	int len, anymode, unknownmode, truncated, numfs, i, notdone;
 
 	cur = buf;
 	left = buflen;
 	truncated = 0;
 
 	len = snprintf(cur, left, "subject ");
-	if (len < 0 || len > left)
+	if (len < 0 || len >= left)
 		goto truncated;
 	left -= len;
 	cur += len;
 	if (rule->mbr_subject.mbs_flags) {
 		if (rule->mbr_subject.mbs_neg == MBS_ALL_FLAGS) {
 			len = snprintf(cur, left, "not ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -89,7 +89,7 @@
 
 		if (!notdone && (rule->mbr_subject.mbs_neg & MBO_UID_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -99,14 +99,14 @@
 			if (pwd != NULL) {
 				len = snprintf(cur, left, "uid %s",
 				    pwd->pw_name);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
 			} else {
 				len = snprintf(cur, left, "uid %u",
 				    rule->mbr_subject.mbs_uid_min);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -117,21 +117,21 @@
 				if (pwd != NULL) {
 					len = snprintf(cur, left, ":%s ",
 					    pwd->pw_name);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				} else {
 					len = snprintf(cur, left, ":%u ",
 					    rule->mbr_subject.mbs_uid_max);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				}
 			} else {
 				len = snprintf(cur, left, " ");
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -139,7 +139,7 @@
 		}
 		if (!notdone && (rule->mbr_subject.mbs_neg & MBO_GID_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -149,14 +149,14 @@
 			if (grp != NULL) {
 				len = snprintf(cur, left, "gid %s",
 				    grp->gr_name);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
 			} else {
 				len = snprintf(cur, left, "gid %u",
 				    rule->mbr_subject.mbs_gid_min);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -167,21 +167,21 @@
 				if (grp != NULL) {
 					len = snprintf(cur, left, ":%s ",
 					    grp->gr_name);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				} else {
 					len = snprintf(cur, left, ":%u ",
 					    rule->mbr_subject.mbs_gid_max);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				}
 			} else {
 				len = snprintf(cur, left, " ");
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -189,7 +189,7 @@
 		}
 		if (!notdone && (rule->mbr_subject.mbs_neg & MBS_PRISON_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -197,7 +197,7 @@
 		if (rule->mbr_subject.mbs_flags & MBS_PRISON_DEFINED) {
 			len = snprintf(cur, left, "jailid %d ", 
 			    rule->mbr_subject.mbs_prison);
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -205,14 +205,14 @@
 	}
 
 	len = snprintf(cur, left, "object ");
-	if (len < 0 || len > left)
+	if (len < 0 || len >= left)
 		goto truncated;
 	left -= len;
 	cur += len;
 	if (rule->mbr_object.mbo_flags) {
 		if (rule->mbr_object.mbo_neg == MBO_ALL_FLAGS) {
 			len = snprintf(cur, left, "not ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -223,7 +223,7 @@
 
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_UID_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -233,14 +233,14 @@
 			if (pwd != NULL) {
 				len = snprintf(cur, left, "uid %s",
 				    pwd->pw_name);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
 			} else {
 				len = snprintf(cur, left, "uid %u",
 				    rule->mbr_object.mbo_uid_min);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -251,21 +251,21 @@
 				if (pwd != NULL) {
 					len = snprintf(cur, left, ":%s ",
 					    pwd->pw_name);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				} else {
 					len = snprintf(cur, left, ":%u ",
 					    rule->mbr_object.mbo_uid_max);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				}
 			} else {
 				len = snprintf(cur, left, " ");
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -273,7 +273,7 @@
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_GID_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -283,14 +283,14 @@
 			if (grp != NULL) {
 				len = snprintf(cur, left, "gid %s",
 				    grp->gr_name);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
 			} else {
 				len = snprintf(cur, left, "gid %u",
 				    rule->mbr_object.mbo_gid_min);
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -301,21 +301,21 @@
 				if (grp != NULL) {
 					len = snprintf(cur, left, ":%s ",
 					    grp->gr_name);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				} else {
 					len = snprintf(cur, left, ":%u ",
 					    rule->mbr_object.mbo_gid_max);
-					if (len < 0 || len > left)
+					if (len < 0 || len >= left)
 						goto truncated;
 					left -= len;
 					cur += len;
 				}
 			} else {
 				len = snprintf(cur, left, " ");
-				if (len < 0 || len > left)
+				if (len < 0 || len >= left)
 					goto truncated;
 				left -= len;
 				cur += len;
@@ -323,7 +323,7 @@
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_FSID_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -337,70 +337,70 @@
 					break;
 			len = snprintf(cur, left, "filesys %s ", 
 			    i == numfs ? "???" : mntbuf[i].f_mntonname);
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_SUID)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (rule->mbr_object.mbo_flags & MBO_SUID) {
 			len = snprintf(cur, left, "suid ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_SGID)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (rule->mbr_object.mbo_flags & MBO_SGID) {
 			len = snprintf(cur, left, "sgid ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_UID_SUBJECT)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (rule->mbr_object.mbo_flags & MBO_UID_SUBJECT) {
 			len = snprintf(cur, left, "uid_of_subject ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_GID_SUBJECT)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (rule->mbr_object.mbo_flags & MBO_GID_SUBJECT) {
 			len = snprintf(cur, left, "gid_of_subject ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
 		}
 		if (!notdone && (rule->mbr_object.mbo_neg & MBO_TYPE_DEFINED)) {
 			len = snprintf(cur, left, "! ");
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -427,7 +427,7 @@
 			}
 			type[i++] = '\0';
 			len = snprintf(cur, left, "type %s ", type);
-			if (len < 0 || len > left)
+			if (len < 0 || len >= left)
 				goto truncated;
 			left -= len;
 			cur += len;
@@ -435,7 +435,7 @@
 	}
 
 	len = snprintf(cur, left, "mode ");
-	if (len < 0 || len > left)
+	if (len < 0 || len >= left)
 		goto truncated;
 	left -= len;
 	cur += len;
@@ -445,7 +445,7 @@
 
 	if (rule->mbr_mode & MBI_ADMIN) {
 		len = snprintf(cur, left, "a");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -453,7 +453,7 @@
 	}
 	if (rule->mbr_mode & MBI_READ) {
 		len = snprintf(cur, left, "r");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -461,7 +461,7 @@
 	}
 	if (rule->mbr_mode & MBI_STAT) {
 		len = snprintf(cur, left, "s");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -469,7 +469,7 @@
 	}
 	if (rule->mbr_mode & MBI_WRITE) {
 		len = snprintf(cur, left, "w");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -477,7 +477,7 @@
 	}
 	if (rule->mbr_mode & MBI_EXEC) {
 		len = snprintf(cur, left, "x");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -485,7 +485,7 @@
 	}
 	if (!anymode) {
 		len = snprintf(cur, left, "n");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -493,7 +493,7 @@
 	}
 	if (unknownmode) {
 		len = snprintf(cur, left, "?");
-		if (len < 0 || len > left)
+		if (len < 0 || len >= left)
 			goto truncated;
 
 		left -= len;
@@ -513,7 +513,6 @@
 	uid_t uid1, uid2;
 	char *spec1, *spec2, *endp;
 	unsigned long value;
-	size_t len;
 
 	spec2 = spec;
 	spec1 = strsep(&spec2, ":");
@@ -524,8 +523,7 @@
 	else {
 		value = strtoul(spec1, &endp, 10);
 		if (*endp != '\0') {
-			len = snprintf(errstr, buflen,
-			    "invalid uid: '%s'", spec1);
+			snprintf(errstr, buflen, "invalid uid: '%s'", spec1);
 			return (-1);
 		}
 		uid1 = value;
@@ -542,8 +540,7 @@
 	else {
 		value = strtoul(spec2, &endp, 10);
 		if (*endp != '\0') {
-			len = snprintf(errstr, buflen,
-			    "invalid uid: '%s'", spec2);
+			snprintf(errstr, buflen, "invalid uid: '%s'", spec2);
 			return (-1);
 		}
 		uid2 = value;
@@ -562,7 +559,6 @@
 	gid_t gid1, gid2;
 	char *spec1, *spec2, *endp;
 	unsigned long value;
-	size_t len;
 
 	spec2 = spec;
 	spec1 = strsep(&spec2, ":");
@@ -573,8 +569,7 @@
 	else {
 		value = strtoul(spec1, &endp, 10);
 		if (*endp != '\0') {
-			len = snprintf(errstr, buflen,
-			    "invalid gid: '%s'", spec1);
+			snprintf(errstr, buflen, "invalid gid: '%s'", spec1);
 			return (-1);
 		}
 		gid1 = value;
@@ -591,8 +586,7 @@
 	else {
 		value = strtoul(spec2, &endp, 10);
 		if (*endp != '\0') {
-			len = snprintf(errstr, buflen,
-			    "invalid gid: '%s'", spec2);
+			snprintf(errstr, buflen, "invalid gid: '%s'", spec2);
 			return (-1);
 		}
 		gid2 = value;
@@ -614,7 +608,6 @@
 	uid_t uid_min, uid_max;
 	gid_t gid_min, gid_max;
 	int jid;
-	size_t len;
 	long value;
 
 	current = 0;
@@ -631,11 +624,11 @@
 	while (current < argc) {
 		if (strcmp(argv[current], "uid") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "uid short");
+				snprintf(errstr, buflen, "uid short");
 				return (-1);
 			}
 			if (flags & MBS_UID_DEFINED) {
-				len = snprintf(errstr, buflen, "one uid only");
+				snprintf(errstr, buflen, "one uid only");
 				return (-1);
 			}
 			if (bsde_parse_uidrange(argv[current+1],
@@ -649,11 +642,11 @@
 			current += 2;
 		} else if (strcmp(argv[current], "gid") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "gid short");
+				snprintf(errstr, buflen, "gid short");
 				return (-1);
 			}
 			if (flags & MBS_GID_DEFINED) {
-				len = snprintf(errstr, buflen, "one gid only");
+				snprintf(errstr, buflen, "one gid only");
 				return (-1);
 			}
 			if (bsde_parse_gidrange(argv[current+1],
@@ -667,17 +660,17 @@
 			current += 2;
 		} else if (strcmp(argv[current], "jailid") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "prison short");
+				snprintf(errstr, buflen, "prison short");
 				return (-1);
 			}
 			if (flags & MBS_PRISON_DEFINED) {
-				len = snprintf(errstr, buflen, "one jail only");
+				snprintf(errstr, buflen, "one jail only");
 				return (-1);
 			}
 			value = strtol(argv[current+1], &endp, 10);
 			if (*endp != '\0') {
-				len = snprintf(errstr, buflen,
-				    "invalid jid: '%s'", argv[current+1]);
+				snprintf(errstr, buflen, "invalid jid: '%s'",
+				    argv[current+1]);
 				return (-1);
 			}
 			jid = value;
@@ -689,14 +682,13 @@
 			current += 2;
 		} else if (strcmp(argv[current], "!") == 0) {
 			if (nextnot) {
-				len = snprintf(errstr, buflen,
-				    "double negative");
+				snprintf(errstr, buflen, "double negative");
 				return (-1);
 			}
 			nextnot = 1;
 			current += 1;
 		} else {
-			len = snprintf(errstr, buflen, "'%s' not expected",
+			snprintf(errstr, buflen, "'%s' not expected",
 			    argv[current]);
 			return (-1);
 		}
@@ -724,7 +716,6 @@
 int
 bsde_parse_type(char *spec, int *type, size_t buflen, char *errstr)
 {
-	size_t len;
 	int i;
 
 	*type = 0;
@@ -756,7 +747,7 @@
 			*type |= MBO_ALL_TYPE;
 			break;
 		default:
-			len = snprintf(errstr, buflen, "Unknown type code: %c",
+			snprintf(errstr, buflen, "Unknown type code: %c",
 			    spec[i]);
 			return (-1);
 		} 
@@ -768,12 +759,11 @@
 int
 bsde_parse_fsid(char *spec, struct fsid *fsid, size_t buflen, char *errstr)
 {
-	size_t len;
 	struct statfs buf;
 
 	if (statfs(spec, &buf) < 0) {
-		len = snprintf(errstr, buflen, "Unable to get id for %s: %s",
-		    spec, strerror(errno));
+		snprintf(errstr, buflen, "Unable to get id for %s: %s", spec,
+		    strerror(errno));
 		return (-1);
 	}
 
@@ -792,7 +782,6 @@
 	gid_t gid_min, gid_max;
 	int type;
 	struct fsid fsid;
-	size_t len;
 
 	current = 0;
 	flags = 0;
@@ -808,11 +797,11 @@
 	while (current < argc) {
 		if (strcmp(argv[current], "uid") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "uid short");
+				snprintf(errstr, buflen, "uid short");
 				return (-1);
 			}
 			if (flags & MBO_UID_DEFINED) {
-				len = snprintf(errstr, buflen, "one uid only");
+				snprintf(errstr, buflen, "one uid only");
 				return (-1);
 			}
 			if (bsde_parse_uidrange(argv[current+1],
@@ -826,11 +815,11 @@
 			current += 2;
 		} else if (strcmp(argv[current], "gid") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "gid short");
+				snprintf(errstr, buflen, "gid short");
 				return (-1);
 			}
 			if (flags & MBO_GID_DEFINED) {
-				len = snprintf(errstr, buflen, "one gid only");
+				snprintf(errstr, buflen, "one gid only");
 				return (-1);
 			}
 			if (bsde_parse_gidrange(argv[current+1],
@@ -844,11 +833,11 @@
 			current += 2;
 		} else if (strcmp(argv[current], "filesys") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "filesys short");
+				snprintf(errstr, buflen, "filesys short");
 				return (-1);
 			}
 			if (flags & MBO_FSID_DEFINED) {
-				len = snprintf(errstr, buflen, "one fsid only");
+				snprintf(errstr, buflen, "one fsid only");
 				return (-1);
 			}
 			if (bsde_parse_fsid(argv[current+1], &fsid,
@@ -890,11 +879,11 @@
 			current += 1;
 		} else if (strcmp(argv[current], "type") == 0) {
 			if (current + 2 > argc) {
-				len = snprintf(errstr, buflen, "type short");
+				snprintf(errstr, buflen, "type short");
 				return (-1);
 			}
 			if (flags & MBO_TYPE_DEFINED) {
-				len = snprintf(errstr, buflen, "one type only");
+				snprintf(errstr, buflen, "one type only");
 				return (-1);
 			}
 			if (bsde_parse_type(argv[current+1], &type,
@@ -908,14 +897,13 @@
 			current += 2;
 		} else if (strcmp(argv[current], "!") == 0) {
 			if (nextnot) {
-				len = snprintf(errstr, buflen,
-				    "double negative'");
+				snprintf(errstr, buflen, "double negative'");
 				return (-1);
 			}
 			nextnot = 1;
 			current += 1;
 		} else {
-			len = snprintf(errstr, buflen, "'%s' not expected",
+			snprintf(errstr, buflen, "'%s' not expected",
 			    argv[current]);
 			return (-1);
 		}
@@ -946,16 +934,15 @@
 bsde_parse_mode(int argc, char *argv[], mode_t *mode, size_t buflen,
     char *errstr)
 {
-	size_t len;
 	int i;
 
 	if (argc == 0) {
-		len = snprintf(errstr, buflen, "mode expects mode value");
+		snprintf(errstr, buflen, "mode expects mode value");
 		return (-1);
 	}
 
 	if (argc != 1) {
-		len = snprintf(errstr, buflen, "'%s' unexpected", argv[1]);
+		snprintf(errstr, buflen, "'%s' unexpected", argv[1]);
 		return (-1);
 	}
 
@@ -981,7 +968,7 @@
 			/* ignore */
 			break;
 		default:
-			len = snprintf(errstr, buflen, "Unknown mode letter: %c",
+			snprintf(errstr, buflen, "Unknown mode letter: %c",
 			    argv[0][i]);
 			return (-1);
 		} 
@@ -998,17 +985,16 @@
 	int object, object_elements, object_elements_length;
 	int mode, mode_elements, mode_elements_length;
 	int error, i;
-	size_t len;
 
 	bzero(rule, sizeof(*rule));
 
 	if (argc < 1) {
-		len = snprintf(errstr, buflen, "Rule must begin with subject");
+		snprintf(errstr, buflen, "Rule must begin with subject");
 		return (-1);
 	}
 
 	if (strcmp(argv[0], "subject") != 0) {
-		len = snprintf(errstr, buflen, "Rule must begin with subject");
+		snprintf(errstr, buflen, "Rule must begin with subject");
 		return (-1);
 	}
 	subject = 0;
@@ -1022,7 +1008,7 @@
 			object = i;
 
 	if (object == -1) {
-		len = snprintf(errstr, buflen, "Rule must contain an object");
+		snprintf(errstr, buflen, "Rule must contain an object");
 		return (-1);
 	}
 
@@ -1033,7 +1019,7 @@
 			mode = i;
 
 	if (mode == -1) {
-		len = snprintf(errstr, buflen, "Rule must contain mode");
+		snprintf(errstr, buflen, "Rule must contain mode");
 		return (-1);
 	}
 
@@ -1112,12 +1098,12 @@
 	len = sizeof(version);
 	error = sysctlbyname(MIB ".rule_version", &version, &len, NULL, 0);
 	if (error) {
-		len = snprintf(errstr, buflen, "version check failed: %s",
+		snprintf(errstr, buflen, "version check failed: %s",
 		    strerror(errno));
 		return (-1);
 	}
 	if (version != MB_VERSION) {
-		len = snprintf(errstr, buflen, "module v%d != library v%d",
+		snprintf(errstr, buflen, "module v%d != library v%d",
 		    version, MB_VERSION);
 		return (-1);
 	}
@@ -1134,12 +1120,11 @@
 	len = sizeof(rule_count);
 	error = sysctlbyname(MIB ".rule_count", &rule_count, &len, NULL, 0);
 	if (error) {
-		len = snprintf(errstr, buflen, strerror(errno));
+		snprintf(errstr, buflen, "%s", strerror(errno));
 		return (-1);
 	}
 	if (len != sizeof(rule_count)) {
-		len = snprintf(errstr, buflen, "Data error in %s.rule_count",
-		    MIB);
+		snprintf(errstr, buflen, "Data error in %s.rule_count", MIB);
 		return (-1);
 	}
 
@@ -1156,12 +1141,11 @@
 	len = sizeof(rule_slots);
 	error = sysctlbyname(MIB ".rule_slots", &rule_slots, &len, NULL, 0);
 	if (error) {
-		len = snprintf(errstr, buflen, strerror(errno));
+		snprintf(errstr, buflen, "%s", strerror(errno));
 		return (-1);
 	}
 	if (len != sizeof(rule_slots)) {
-		len = snprintf(errstr, buflen, "Data error in %s.rule_slots",
-		    MIB);
+		snprintf(errstr, buflen, "Data error in %s.rule_slots", MIB);
 		return (-1);
 	}
 
@@ -1187,7 +1171,7 @@
 	len = 10;
 	error = bsde_get_mib(MIB ".rules", name, &len);
 	if (error) {
-		len = snprintf(errstr, errlen, "%s: %s", MIB ".rules",
+		snprintf(errstr, errlen, "%s: %s", MIB ".rules",
 		    strerror(errno));
 		return (-1);
 	}
@@ -1199,11 +1183,11 @@
 	if (error  == -1 && errno == ENOENT)
 		return (-2);
 	if (error) {
-		len = snprintf(errstr, errlen, "%s.%d: %s", MIB ".rules",
-		    rulenum, strerror(errno));
+		snprintf(errstr, errlen, "%s.%d: %s", MIB ".rules", rulenum,
+		    strerror(errno));
 		return (-1);
 	} else if (size != sizeof(*rule)) {
-		len = snprintf(errstr, errlen, "Data error in %s.%d: %s",
+		snprintf(errstr, errlen, "Data error in %s.%d: %s",
 		    MIB ".rules", rulenum, strerror(errno));
 		return (-1);
 	}
@@ -1225,7 +1209,7 @@
 	len = 10;
 	error = bsde_get_mib(MIB ".rules", name, &len);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s: %s", MIB ".rules",
+		snprintf(errstr, buflen, "%s: %s", MIB ".rules",
 		    strerror(errno));
 		return (-1);
 	}
@@ -1236,7 +1220,7 @@
 	size = sizeof(rule);
 	error = sysctl(name, len, NULL, NULL, &rule, 0);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
+		snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
 		    rulenum, strerror(errno));
 		return (-1);
 	}
@@ -1258,7 +1242,7 @@
 	len = 10;
 	error = bsde_get_mib(MIB ".rules", name, &len);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s: %s", MIB ".rules",
+		snprintf(errstr, buflen, "%s: %s", MIB ".rules",
 		    strerror(errno));
 		return (-1);
 	}
@@ -1269,7 +1253,7 @@
 	size = sizeof(*rule);
 	error = sysctl(name, len, NULL, NULL, rule, size);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
+		snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
 		    rulenum, strerror(errno));
 		return (-1);
 	}
@@ -1292,14 +1276,14 @@
 	len = 10;
 	error = bsde_get_mib(MIB ".rules", name, &len);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s: %s", MIB ".rules",
+		snprintf(errstr, buflen, "%s: %s", MIB ".rules",
 		    strerror(errno));
 		return (-1);
 	}
 
 	rule_slots = bsde_get_rule_slots(BUFSIZ, charstr);
 	if (rule_slots == -1) {
-		len = snprintf(errstr, buflen, "unable to get rule slots: %s",
+		snprintf(errstr, buflen, "unable to get rule slots: %s",
 		    strerror(errno));
 		return (-1);
 	}
@@ -1310,8 +1294,8 @@
 	size = sizeof(*rule);
 	error = sysctl(name, len, NULL, NULL, rule, size);
 	if (error) {
-		len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
-		    rule_slots, strerror(errno));
+		snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules", rule_slots,
+		    strerror(errno));
 		return (-1);
 	}
 

--------------070809050808050201010205--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C173BC1.7020808>