From owner-freebsd-current@FreeBSD.ORG Tue Jun 15 08:37:14 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B9211065673 for ; Tue, 15 Jun 2010 08:37:14 +0000 (UTC) (envelope-from dimitry@andric.com) Received: from tensor.andric.com (cl-327.ede-01.nl.sixxs.net [IPv6:2001:7b8:2ff:146::2]) by mx1.freebsd.org (Postfix) with ESMTP id 5FAA08FC0A for ; Tue, 15 Jun 2010 08:37:13 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7:0:6017:7948:af20:f043] (unknown [IPv6:2001:7b8:3a7:0:6017:7948:af20:f043]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 3EDF25C43; Tue, 15 Jun 2010 10:37:12 +0200 (CEST) Message-ID: <4C173BC1.7020808@andric.com> Date: Tue, 15 Jun 2010 10:37:21 +0200 From: Dimitry Andric User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.4) Gecko/20100612 Lanikai/3.1.1pre MIME-Version: 1.0 To: Max Laier References: <201006150008.14124.max@love2party.net> In-Reply-To: <201006150008.14124.max@love2party.net> Content-Type: multipart/mixed; boundary="------------070809050808050201010205" Cc: freebsd-current@freebsd.org Subject: Re: [patch] Misc warnings found by clang. X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2010 08:37:14 -0000 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--