ssl/ssl_ciph.c:1366: error: UNINITIALIZED_VALUE
  The value read from buflen was never initialized.
Showing all 1 steps of the trace


ssl/ssl_ciph.c:1366:18: 
1364.           if (rule == CIPHER_SPECIAL) { /* special command */
1365.               ok = 0;
1366. >             if ((buflen == 8) && !strncmp(buf, "STRENGTH", 8))
1367.                   ok = ssl_cipher_strength_sort(head_p, tail_p);
1368.               else if (buflen == 10 && !strncmp(buf, "SECLEVEL=", 9)) {

static int ssl_cipher_process_rulestr(const char *rule_str,
                                      CIPHER_ORDER **head_p,
                                      CIPHER_ORDER **tail_p,
                                      const SSL_CIPHER **ca_list, CERT *c)
{
    unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl,
        algo_strength;
    const char *l, *buf;
    int j, multi, found, rule, retval, ok, buflen;
    unsigned long cipher_id = 0;
    char ch;
    retval = 1;
    l = rule_str;
    for (;;) {
        ch = *l;
        if (ch == '\0')
            break;
        if (ch == '-') {
            rule = CIPHER_DEL;
            l++;
        } else if (ch == '+') {
            rule = CIPHER_ORD;
            l++;
        } else if (ch == '!') {
            rule = CIPHER_KILL;
            l++;
        } else if (ch == '@') {
            rule = CIPHER_SPECIAL;
            l++;
        } else {
            rule = CIPHER_ADD;
        }
        if (ITEM_SEP(ch)) {
            l++;
            continue;
        }
        alg_mkey = 0;
        alg_auth = 0;
        alg_enc = 0;
        alg_mac = 0;
        alg_ssl = 0;
        algo_strength = 0;
        for (;;) {
            ch = *l;
            buf = l;
            buflen = 0;
#ifndef CHARSET_EBCDIC
            while (((ch >= 'A') && (ch <= 'Z')) ||
                   ((ch >= '0') && (ch <= '9')) ||
                   ((ch >= 'a') && (ch <= 'z')) ||
                   (ch == '-') || (ch == '.') || (ch == '='))
#else
            while (isalnum(ch) || (ch == '-') || (ch == '.') || (ch == '='))
#endif
            {
                ch = *(++l);
                buflen++;
            }
            if (buflen == 0) {
                SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
                       SSL_R_INVALID_COMMAND);
                retval = found = 0;
                l++;
                break;
            }
            if (rule == CIPHER_SPECIAL) {
                found = 0;
                break;
            }
            if (ch == '+') {
                multi = 1;
                l++;
            } else
                multi = 0;
            j = found = 0;
            cipher_id = 0;
            while (ca_list[j]) {
                if (!strncmp(buf, ca_list[j]->name, buflen) &&
                    (ca_list[j]->name[buflen] == '\0')) {
                    found = 1;
                    break;
                } else
                    j++;
            }
            if (!found)
                break;
            if (ca_list[j]->algorithm_mkey) {
                if (alg_mkey) {
                    alg_mkey &= ca_list[j]->algorithm_mkey;
                    if (!alg_mkey) {
                        found = 0;
                        break;
                    }
                } else
                    alg_mkey = ca_list[j]->algorithm_mkey;
            }
            if (ca_list[j]->algorithm_auth) {
                if (alg_auth) {
                    alg_auth &= ca_list[j]->algorithm_auth;
                    if (!alg_auth) {
                        found = 0;
                        break;
                    }
                } else
                    alg_auth = ca_list[j]->algorithm_auth;
            }
            if (ca_list[j]->algorithm_enc) {
                if (alg_enc) {
                    alg_enc &= ca_list[j]->algorithm_enc;
                    if (!alg_enc) {
                        found = 0;
                        break;
                    }
                } else
                    alg_enc = ca_list[j]->algorithm_enc;
            }
            if (ca_list[j]->algorithm_mac) {
                if (alg_mac) {
                    alg_mac &= ca_list[j]->algorithm_mac;
                    if (!alg_mac) {
                        found = 0;
                        break;
                    }
                } else
                    alg_mac = ca_list[j]->algorithm_mac;
            }
            if (ca_list[j]->algo_strength & SSL_EXP_MASK) {
                if (algo_strength & SSL_EXP_MASK) {
                    algo_strength &=
                        (ca_list[j]->algo_strength & SSL_EXP_MASK) |
                        ~SSL_EXP_MASK;
                    if (!(algo_strength & SSL_EXP_MASK)) {
                        found = 0;
                        break;
                    }
                } else
                    algo_strength |= ca_list[j]->algo_strength & SSL_EXP_MASK;
            }
            if (ca_list[j]->algo_strength & SSL_STRONG_MASK) {
                if (algo_strength & SSL_STRONG_MASK) {
                    algo_strength &=
                        (ca_list[j]->algo_strength & SSL_STRONG_MASK) |
                        ~SSL_STRONG_MASK;
                    if (!(algo_strength & SSL_STRONG_MASK)) {
                        found = 0;
                        break;
                    }
                } else
                    algo_strength |=
                        ca_list[j]->algo_strength & SSL_STRONG_MASK;
            }
            if (ca_list[j]->valid) {
                cipher_id = ca_list[j]->id;
            } else {
                if (ca_list[j]->algorithm_ssl) {
                    if (alg_ssl) {
                        alg_ssl &= ca_list[j]->algorithm_ssl;
                        if (!alg_ssl) {
                            found = 0;
                            break;
                        }
                    } else
                        alg_ssl = ca_list[j]->algorithm_ssl;
                }
            }
            if (!multi)
                break;
        }
        if (rule == CIPHER_SPECIAL) {
            ok = 0;
            if ((buflen == 8) && !strncmp(buf, "STRENGTH", 8))
                ok = ssl_cipher_strength_sort(head_p, tail_p);
            else if (buflen == 10 && !strncmp(buf, "SECLEVEL=", 9)) {
                int level = buf[9] - '0';
                if (level < 0 || level > 5) {
                    SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
                           SSL_R_INVALID_COMMAND);
                } else {
                    c->sec_level = level;
                    ok = 1;
                }
            } else
                SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
                       SSL_R_INVALID_COMMAND);
            if (ok == 0)
                retval = 0;
            while ((*l != '\0') && !ITEM_SEP(*l))
                l++;
        } else if (found) {
            ssl_cipher_apply_rule(cipher_id,
                                  alg_mkey, alg_auth, alg_enc, alg_mac,
                                  alg_ssl, algo_strength, rule, -1, head_p,
                                  tail_p);
        } else {
            while ((*l != '\0') && !ITEM_SEP(*l))
                l++;
        }
        if (*l == '\0')
            break;
    }
    return (retval);
}
['static int ssl_cipher_process_rulestr(const char *rule_str,\n                                      CIPHER_ORDER **head_p,\n                                      CIPHER_ORDER **tail_p,\n                                      const SSL_CIPHER **ca_list, CERT *c)\n{\n    unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl,\n        algo_strength;\n    const char *l, *buf;\n    int j, multi, found, rule, retval, ok, buflen;\n    unsigned long cipher_id = 0;\n    char ch;\n    retval = 1;\n    l = rule_str;\n    for (;;) {\n        ch = *l;\n        if (ch == \'\\0\')\n            break;\n        if (ch == \'-\') {\n            rule = CIPHER_DEL;\n            l++;\n        } else if (ch == \'+\') {\n            rule = CIPHER_ORD;\n            l++;\n        } else if (ch == \'!\') {\n            rule = CIPHER_KILL;\n            l++;\n        } else if (ch == \'@\') {\n            rule = CIPHER_SPECIAL;\n            l++;\n        } else {\n            rule = CIPHER_ADD;\n        }\n        if (ITEM_SEP(ch)) {\n            l++;\n            continue;\n        }\n        alg_mkey = 0;\n        alg_auth = 0;\n        alg_enc = 0;\n        alg_mac = 0;\n        alg_ssl = 0;\n        algo_strength = 0;\n        for (;;) {\n            ch = *l;\n            buf = l;\n            buflen = 0;\n#ifndef CHARSET_EBCDIC\n            while (((ch >= \'A\') && (ch <= \'Z\')) ||\n                   ((ch >= \'0\') && (ch <= \'9\')) ||\n                   ((ch >= \'a\') && (ch <= \'z\')) ||\n                   (ch == \'-\') || (ch == \'.\') || (ch == \'=\'))\n#else\n            while (isalnum(ch) || (ch == \'-\') || (ch == \'.\') || (ch == \'=\'))\n#endif\n            {\n                ch = *(++l);\n                buflen++;\n            }\n            if (buflen == 0) {\n                SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,\n                       SSL_R_INVALID_COMMAND);\n                retval = found = 0;\n                l++;\n                break;\n            }\n            if (rule == CIPHER_SPECIAL) {\n                found = 0;\n                break;\n            }\n            if (ch == \'+\') {\n                multi = 1;\n                l++;\n            } else\n                multi = 0;\n            j = found = 0;\n            cipher_id = 0;\n            while (ca_list[j]) {\n                if (!strncmp(buf, ca_list[j]->name, buflen) &&\n                    (ca_list[j]->name[buflen] == \'\\0\')) {\n                    found = 1;\n                    break;\n                } else\n                    j++;\n            }\n            if (!found)\n                break;\n            if (ca_list[j]->algorithm_mkey) {\n                if (alg_mkey) {\n                    alg_mkey &= ca_list[j]->algorithm_mkey;\n                    if (!alg_mkey) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    alg_mkey = ca_list[j]->algorithm_mkey;\n            }\n            if (ca_list[j]->algorithm_auth) {\n                if (alg_auth) {\n                    alg_auth &= ca_list[j]->algorithm_auth;\n                    if (!alg_auth) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    alg_auth = ca_list[j]->algorithm_auth;\n            }\n            if (ca_list[j]->algorithm_enc) {\n                if (alg_enc) {\n                    alg_enc &= ca_list[j]->algorithm_enc;\n                    if (!alg_enc) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    alg_enc = ca_list[j]->algorithm_enc;\n            }\n            if (ca_list[j]->algorithm_mac) {\n                if (alg_mac) {\n                    alg_mac &= ca_list[j]->algorithm_mac;\n                    if (!alg_mac) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    alg_mac = ca_list[j]->algorithm_mac;\n            }\n            if (ca_list[j]->algo_strength & SSL_EXP_MASK) {\n                if (algo_strength & SSL_EXP_MASK) {\n                    algo_strength &=\n                        (ca_list[j]->algo_strength & SSL_EXP_MASK) |\n                        ~SSL_EXP_MASK;\n                    if (!(algo_strength & SSL_EXP_MASK)) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    algo_strength |= ca_list[j]->algo_strength & SSL_EXP_MASK;\n            }\n            if (ca_list[j]->algo_strength & SSL_STRONG_MASK) {\n                if (algo_strength & SSL_STRONG_MASK) {\n                    algo_strength &=\n                        (ca_list[j]->algo_strength & SSL_STRONG_MASK) |\n                        ~SSL_STRONG_MASK;\n                    if (!(algo_strength & SSL_STRONG_MASK)) {\n                        found = 0;\n                        break;\n                    }\n                } else\n                    algo_strength |=\n                        ca_list[j]->algo_strength & SSL_STRONG_MASK;\n            }\n            if (ca_list[j]->valid) {\n                cipher_id = ca_list[j]->id;\n            } else {\n                if (ca_list[j]->algorithm_ssl) {\n                    if (alg_ssl) {\n                        alg_ssl &= ca_list[j]->algorithm_ssl;\n                        if (!alg_ssl) {\n                            found = 0;\n                            break;\n                        }\n                    } else\n                        alg_ssl = ca_list[j]->algorithm_ssl;\n                }\n            }\n            if (!multi)\n                break;\n        }\n        if (rule == CIPHER_SPECIAL) {\n            ok = 0;\n            if ((buflen == 8) && !strncmp(buf, "STRENGTH", 8))\n                ok = ssl_cipher_strength_sort(head_p, tail_p);\n            else if (buflen == 10 && !strncmp(buf, "SECLEVEL=", 9)) {\n                int level = buf[9] - \'0\';\n                if (level < 0 || level > 5) {\n                    SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,\n                           SSL_R_INVALID_COMMAND);\n                } else {\n                    c->sec_level = level;\n                    ok = 1;\n                }\n            } else\n                SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,\n                       SSL_R_INVALID_COMMAND);\n            if (ok == 0)\n                retval = 0;\n            while ((*l != \'\\0\') && !ITEM_SEP(*l))\n                l++;\n        } else if (found) {\n            ssl_cipher_apply_rule(cipher_id,\n                                  alg_mkey, alg_auth, alg_enc, alg_mac,\n                                  alg_ssl, algo_strength, rule, -1, head_p,\n                                  tail_p);\n        } else {\n            while ((*l != \'\\0\') && !ITEM_SEP(*l))\n                l++;\n        }\n        if (*l == \'\\0\')\n            break;\n    }\n    return (retval);\n}']