Mercurial > dovecot > core-2.2
changeset 18363:a4acf88b0c91
auth ldap: Fixed crash when handling invalid SSL option.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 17 Mar 2015 10:49:20 +0200 |
parents | 870cb73e5960 |
children | 3546457ae3fb |
files | src/auth/db-ldap.c |
diffstat | 1 files changed, 15 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/db-ldap.c Tue Mar 17 09:58:03 2015 +0200 +++ b/src/auth/db-ldap.c Tue Mar 17 10:49:20 2015 +0200 @@ -1043,12 +1043,12 @@ } static void ATTR_NULL(1) -db_ldap_set_opt(struct ldap_connection *conn, int opt, const void *value, - const char *optname, const char *value_str) +db_ldap_set_opt(struct ldap_connection *conn, LDAP *ld, int opt, + const void *value, const char *optname, const char *value_str) { int ret; - ret = ldap_set_option(conn == NULL ? NULL : conn->ld, opt, value); + ret = ldap_set_option(ld, opt, value); if (ret != LDAP_SUCCESS) { i_fatal("LDAP %s: Can't set option %s to %s: %s", conn->config_path, optname, value_str, ldap_err2string(ret)); @@ -1056,11 +1056,11 @@ } static void ATTR_NULL(1) -db_ldap_set_opt_str(struct ldap_connection *conn, int opt, const char *value, - const char *optname) +db_ldap_set_opt_str(struct ldap_connection *conn, LDAP *ld, int opt, + const char *value, const char *optname) { if (value != NULL) - db_ldap_set_opt(conn, opt, value, optname, value); + db_ldap_set_opt(conn, ld, opt, value, optname, value); } static void db_ldap_set_tls_options(struct ldap_connection *conn) @@ -1069,18 +1069,18 @@ return; #ifdef OPENLDAP_TLS_OPTIONS - db_ldap_set_opt_str(NULL, LDAP_OPT_X_TLS_CACERTFILE, + db_ldap_set_opt_str(conn, NULL, LDAP_OPT_X_TLS_CACERTFILE, conn->set.tls_ca_cert_file, "tls_ca_cert_file"); - db_ldap_set_opt_str(NULL, LDAP_OPT_X_TLS_CACERTDIR, + db_ldap_set_opt_str(conn, NULL, LDAP_OPT_X_TLS_CACERTDIR, conn->set.tls_ca_cert_dir, "tls_ca_cert_dir"); - db_ldap_set_opt_str(NULL, LDAP_OPT_X_TLS_CERTFILE, + db_ldap_set_opt_str(conn, NULL, LDAP_OPT_X_TLS_CERTFILE, conn->set.tls_cert_file, "tls_cert_file"); - db_ldap_set_opt_str(NULL, LDAP_OPT_X_TLS_KEYFILE, + db_ldap_set_opt_str(conn, NULL, LDAP_OPT_X_TLS_KEYFILE, conn->set.tls_key_file, "tls_key_file"); - db_ldap_set_opt_str(NULL, LDAP_OPT_X_TLS_CIPHER_SUITE, + db_ldap_set_opt_str(conn, NULL, LDAP_OPT_X_TLS_CIPHER_SUITE, conn->set.tls_cipher_suite, "tls_cipher_suite"); if (conn->set.tls_require_cert != NULL) { - db_ldap_set_opt(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &conn->set.ldap_tls_require_cert_parsed, + db_ldap_set_opt(conn, NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &conn->set.ldap_tls_require_cert_parsed, "tls_require_cert", conn->set.tls_require_cert); } #else @@ -1100,18 +1100,18 @@ unsigned int ldap_version; int value; - db_ldap_set_opt(conn, LDAP_OPT_DEREF, &conn->set.ldap_deref, + db_ldap_set_opt(conn, conn->ld, LDAP_OPT_DEREF, &conn->set.ldap_deref, "deref", conn->set.deref); #ifdef LDAP_OPT_DEBUG_LEVEL value = atoi(conn->set.debug_level); if (value != 0) { - db_ldap_set_opt(NULL, LDAP_OPT_DEBUG_LEVEL, &value, + db_ldap_set_opt(conn, NULL, LDAP_OPT_DEBUG_LEVEL, &value, "debug_level", conn->set.debug_level); } #endif ldap_version = conn->set.ldap_version; - db_ldap_set_opt(conn, LDAP_OPT_PROTOCOL_VERSION, &ldap_version, + db_ldap_set_opt(conn, conn->ld, LDAP_OPT_PROTOCOL_VERSION, &ldap_version, "protocol_version", dec2str(ldap_version)); db_ldap_set_tls_options(conn); }