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.
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);
        }
 
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to