Changeset 89f863f in mod_gnutls for src/gnutls_hooks.c


Ignore:
Timestamp:
Oct 19, 2015, 9:07:40 PM (5 years ago)
Author:
Daniel Kahn Gillmor <dkg@…>
Branches:
debian/master, debian/stretch-backports, jessie-backports, upstream
Children:
02c8e54, 24c6c16
Parents:
4addf74 (diff), 71cac80 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Imported Upstream version 0.7.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/gnutls_hooks.c

    r4addf74 r89f863f  
    220220static int read_crt_cn(server_rec * s, apr_pool_t * p, gnutls_x509_crt_t cert, char **cert_cn) {
    221221
    222     int rv = 0, i;
     222    int rv = 0;
    223223    size_t data_len;
    224224
     
    242242        rv = 0;
    243243        /* read subject alternative name */
    244         for (i = 0; !(rv < 0); i++) {
     244        for (int i = 0; !(rv < 0); i++)
     245        {
    245246            data_len = 0;
    246247            rv = gnutls_x509_crt_get_subject_alt_name(cert, i,
     
    323324    }
    324325
    325     /* Load additional PKCS #11 module, if requested */
    326     if (sc_base->p11_module != NULL)
    327     {
    328         rv = gnutls_pkcs11_add_provider(sc_base->p11_module, NULL);
    329         if (rv != GNUTLS_E_SUCCESS)
     326    /* If GnuTLSP11Module is set, load the listed PKCS #11
     327     * modules. Otherwise system defaults will be used. */
     328    if (sc_base->p11_modules != NULL)
     329    {
     330        rv = gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, NULL);
     331        if (rv < 0)
     332        {
    330333            ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
    331                          "GnuTLS: Loading PKCS #11 provider module %s "
     334                         "GnuTLS: Initializing PKCS #11 "
    332335                         "failed: %s (%d).",
    333                          sc_base->p11_module, gnutls_strerror(rv), rv);
     336                         gnutls_strerror(rv), rv);
     337        }
     338        else
     339        {
     340            for (int i = 0; i < sc_base->p11_modules->nelts; i++)
     341            {
     342                char *p11_module =
     343                    APR_ARRAY_IDX(sc_base->p11_modules, i, char *);
     344                rv = gnutls_pkcs11_add_provider(p11_module, NULL);
     345                if (rv != GNUTLS_E_SUCCESS)
     346                    ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
     347                                 "GnuTLS: Loading PKCS #11 provider module %s "
     348                                 "failed: %s (%d).",
     349                                 p11_module, gnutls_strerror(rv), rv);
     350            }
     351        }
    334352    }
    335353
     
    355373        if (sc->export_certificates_size < 0)
    356374            sc->export_certificates_size = 0;
    357         if (sc->client_verify_mode ==  -1)
     375        if (sc->client_verify_mode == -1)
    358376            sc->client_verify_mode = GNUTLS_CERT_IGNORE;
    359         if (sc->client_verify_method ==  mgs_cvm_unset)
     377        if (sc->client_verify_method == mgs_cvm_unset)
    360378            sc->client_verify_method = mgs_cvm_cartel;
    361379
     
    541559int check_server_aliases(vhost_cb_rec *x, server_rec * s, mgs_srvconf_rec *tsc) {
    542560        apr_array_header_t *names;
    543         int i,rv = 0;
     561        int rv = 0;
    544562        char ** name;
    545563
     
    553571                names = s->names;
    554572                name = (char **)names->elts;
    555                 for (i = 0; i < names->nelts; ++i) {
     573                for (int i = 0; i < names->nelts; ++i)
     574        {
    556575                        if (!name[i]) { continue; }
    557576                                if (apr_strnatcasecmp(x->sni_name, name[i]) == 0) {
     
    565584                names = s->wild_names;
    566585        name = (char **)names->elts;
    567                 for (i = 0; i < names->nelts; ++i) {
     586                for (int i = 0; i < names->nelts; ++i)
     587        {
    568588                        if (!name[i]) { continue; }
    569589                                if(apr_fnmatch(name[i], x->sni_name ,
     
    10161036    char *tmp2;
    10171037    size_t len;
    1018     int ret, i;
     1038    int ret;
    10191039
    10201040    if (r == NULL)
     
    10911111
    10921112    /* export all the alternative names (DNS, RFC822 and URI) */
    1093     for (i = 0; !(ret < 0); i++) {
     1113    for (int i = 0; !(ret < 0); i++)
     1114    {
    10941115        const char *san, *sanlabel;
    10951116        len = 0;
     
    12041225static int mgs_cert_verify(request_rec * r, mgs_handle_t * ctxt) {
    12051226    const gnutls_datum_t *cert_list;
    1206     unsigned int cert_list_size, status;
     1227    unsigned int cert_list_size;
     1228    /* assume the certificate is invalid unless explicitly set
     1229     * otherwise */
     1230    unsigned int status = GNUTLS_CERT_INVALID;
    12071231    int rv = GNUTLS_E_NO_CERTIFICATE_FOUND, ret;
    12081232    unsigned int ch_size = 0;
     
    13381362#endif
    13391363        default:
     1364            /* If this block is reached, that indicates a
     1365             * configuration error or bug in mod_gnutls (invalid value
     1366             * of ctxt->sc->client_verify_method). */
    13401367            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    13411368                          "GnuTLS: Failed to Verify X.509 Peer: method '%s' is not supported",
    13421369                          mgs_readable_cvm(ctxt->sc->client_verify_method));
     1370            rv = GNUTLS_E_UNIMPLEMENTED_FEATURE;
    13431371        }
    13441372
     
    13561384#ifdef ENABLE_MSVA
    13571385        case mgs_cvm_msva:
    1358             /* need to set status and rv */
    13591386            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    13601387                          "GnuTLS:  OpenPGP verification via MSVA is not yet implemented");
     
    13631390#endif
    13641391        default:
     1392            /* If this block is reached, that indicates a
     1393             * configuration error or bug in mod_gnutls (invalid value
     1394             * of ctxt->sc->client_verify_method). */
    13651395            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    13661396                          "GnuTLS: Failed to Verify OpenPGP Peer: method '%s' is not supported",
    13671397                          mgs_readable_cvm(ctxt->sc->client_verify_method));
    1368         }
    1369     }
    1370 
     1398            rv = GNUTLS_E_UNIMPLEMENTED_FEATURE;
     1399        }
     1400    }
     1401
     1402    /* "goto exit" at the end of this block skips evaluation of the
     1403     * "status" variable */
    13711404    if (rv < 0) {
    13721405        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     
    14441477
    14451478exit:
    1446     if (gnutls_certificate_type_get(ctxt->session) == GNUTLS_CRT_X509) {
    1447         unsigned int i;
    1448         for (i = 0; i < ch_size; i++) {
     1479    if (gnutls_certificate_type_get(ctxt->session) == GNUTLS_CRT_X509)
     1480        for (unsigned int i = 0; i < ch_size; i++)
    14491481            gnutls_x509_crt_deinit(cert.x509[i]);
    1450         }
    1451     } else if (gnutls_certificate_type_get(ctxt->session) ==
    1452             GNUTLS_CRT_OPENPGP)
     1482    else if (gnutls_certificate_type_get(ctxt->session) ==
     1483             GNUTLS_CRT_OPENPGP)
    14531484        gnutls_openpgp_crt_deinit(cert.pgp);
    14541485    return ret;
    1455 
    1456 
    1457 }
     1486}
     1487
     1488
    14581489
    14591490#ifdef ENABLE_MSVA
Note: See TracChangeset for help on using the changeset viewer.