On Mon, Oct 05, 2015 at 10:05:14PM +0000, Viktor Dukhovni wrote: Can you take this to the Cyrus IMAP list, or the Debian/Ubuntu maintainers?
Proposed patch below. Other plugins require similar treatment. As for Postfix, perhaps "msg_verbose" should not alone be sufficient to trigger password logging? We could require "msg_verbose" *and* an smtpd.conf with log_level set high enough, via code along the lines suggested by Alexey. -- Viktor. diff --git a/plugins/sql.c b/plugins/sql.c index 3b89383..7992b05 100644 --- a/plugins/sql.c +++ b/plugins/sql.c @@ -73,3 +73,3 @@ static void *_mysql_open(char *host, char *port, int usessl, if (!(mysql = mysql_init(NULL))) { - utils->log(NULL, SASL_LOG_ERR, + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: could not execute mysql_init()"); @@ -110,3 +110,3 @@ static int _mysql_exec(void *conn, const char *cmd, char *value, size_t size, if(mysql_errno(conn)) { - utils->log(NULL, SASL_LOG_ERR, "sql query failed: %s", + utils->log(utils->conn, SASL_LOG_ERR, "sql query failed: %s", mysql_error(conn)); @@ -125,3 +125,3 @@ static int _mysql_exec(void *conn, const char *cmd, char *value, size_t size, /* umm nothing found */ - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); return -1; @@ -134,3 +134,3 @@ static int _mysql_exec(void *conn, const char *cmd, char *value, size_t size, mysql_free_result(result); - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); return -1; @@ -138,3 +138,3 @@ static int _mysql_exec(void *conn, const char *cmd, char *value, size_t size, if (row_count > 1) { - utils->log(NULL, SASL_LOG_WARN, + utils->log(utils->conn, SASL_LOG_WARN, "sql plugin: found duplicate row for query %s", cmd); @@ -147,3 +147,3 @@ static int _mysql_exec(void *conn, const char *cmd, char *value, size_t size, /* umm nothing found */ - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); mysql_free_result(result); @@ -259,3 +259,4 @@ static void *_pgsql_open(char *host, char *port, int usessl, if ((PQstatus(conn) != CONNECTION_OK)) { - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", PQerrorMessage(conn)); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %s", + PQerrorMessage(conn)); return NULL; @@ -290,3 +291,3 @@ static int _pgsql_exec(void *conn, const char *cmd, char *value, size_t size, /* error */ - utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %s ", + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin: %s ", PQresStatus(status)); @@ -300,3 +301,3 @@ static int _pgsql_exec(void *conn, const char *cmd, char *value, size_t size, /* umm nothing found */ - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); PQclear(result); @@ -305,3 +306,3 @@ static int _pgsql_exec(void *conn, const char *cmd, char *value, size_t size, if (row_count > 1) { - utils->log(NULL, SASL_LOG_WARN, + utils->log(utils->conn, SASL_LOG_WARN, "sql plugin: found duplicate row for query %s", cmd); @@ -359,3 +360,3 @@ static void *_sqlite_open(char *host __attribute__((unused)), if (db == NULL) { - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", zErrMsg); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %s", zErrMsg); sqlite_freemem (zErrMsg); @@ -366,3 +367,3 @@ static void *_sqlite_open(char *host __attribute__((unused)), if (rc != SQLITE_OK) { - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", zErrMsg); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %s", zErrMsg); sqlite_freemem (zErrMsg); @@ -416,3 +417,3 @@ static int _sqlite_exec(void *db, const char *cmd, char *value, size_t size, if (rc != SQLITE_OK && rc != SQLITE_ABORT) { - utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %s ", zErrMsg); + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin: %s ", zErrMsg); sqlite_freemem (zErrMsg); @@ -428,3 +429,3 @@ static int _sqlite_exec(void *db, const char *cmd, char *value, size_t size, /* umm nothing found */ - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); return -1; @@ -487,5 +488,6 @@ static void *_sqlite3_open(char *host __attribute__((unused)), if (db) - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", sqlite3_errmsg(db)); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %s", + sqlite3_errmsg(db)); else - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %d", rc); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %d", rc); sqlite3_close(db); @@ -497,6 +499,7 @@ static void *_sqlite3_open(char *host __attribute__((unused)), if (zErrMsg) { - utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", zErrMsg); + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin: %s", + zErrMsg); sqlite3_free(zErrMsg); } else - utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %d", rc); + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin: %d", rc); sqlite3_close(db); @@ -554,6 +557,6 @@ static int _sqlite3_exec(void *db, if (zErrMsg) { - utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %s", zErrMsg); + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin: %s", zErrMsg); sqlite3_free(zErrMsg); } else { - utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %d", rc); + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin: %d", rc); } @@ -569,3 +572,3 @@ static int _sqlite3_exec(void *db, /* umm nothing found */ - utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); + utils->log(utils->conn, SASL_LOG_NOTE, "sql plugin: no result found"); return -1; @@ -721,3 +724,3 @@ static char *sql_create_statement(const char *statement, const char *prop, else { - utils->log(NULL, SASL_LOG_ERR, + utils->log(utils->conn, SASL_LOG_ERR, "'%%v' shouldn't be in a SELECT or DELETE"); @@ -771,3 +774,3 @@ static void sql_get_settings(const sasl_utils_t *utils, void *glob_context) if (!e->name) { - utils->log(NULL, SASL_LOG_ERR, "SQL engine '%s' not supported", + utils->log(utils->conn, SASL_LOG_ERR, "SQL engine '%s' not supported", engine_name); @@ -847,3 +850,3 @@ static void *sql_connect(sql_settings_t *settings, const sasl_utils_t *utils) */ - utils->log(NULL, SASL_LOG_DEBUG, + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin try and connect to a host\n"); @@ -863,3 +866,3 @@ static void *sql_connect(sql_settings_t *settings, const sasl_utils_t *utils) - utils->log(NULL, SASL_LOG_DEBUG, + utils->log(utils->conn, SASL_LOG_DEBUG, "sql plugin trying to open db '%s' on host '%s'%s\n", @@ -879,3 +882,3 @@ static void *sql_connect(sql_settings_t *settings, const sasl_utils_t *utils) - utils->log(NULL, SASL_LOG_ERR, + utils->log(utils->conn, SASL_LOG_ERR, "sql plugin could not connect to host %s", cur_host); @@ -919,3 +922,3 @@ static int sql_auxprop_lookup(void *glob_context, - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin Parse the username %s\n", user); @@ -968,3 +971,3 @@ static int sql_auxprop_lookup(void *glob_context, if (!conn) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "sql plugin couldn't connect to any host\n"); @@ -1016,5 +1019,6 @@ static int sql_auxprop_lookup(void *glob_context, do_txn = 1; - sparams->utils->log(NULL, SASL_LOG_DEBUG, "begin transaction"); + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, + "begin transaction"); if (settings->sql_engine->sql_begin_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to begin transaction\n"); @@ -1023,3 +1027,3 @@ static int sql_auxprop_lookup(void *glob_context, - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin create statement from %s %s %s\n", @@ -1037,3 +1041,3 @@ static int sql_auxprop_lookup(void *glob_context, - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin doing query %s\n", query); @@ -1067,5 +1071,6 @@ static int sql_auxprop_lookup(void *glob_context, do_txn = 1; - sparams->utils->log(NULL, SASL_LOG_DEBUG, "begin transaction"); + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, + "begin transaction"); if (settings->sql_engine->sql_begin_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to begin transaction\n"); @@ -1074,3 +1079,3 @@ static int sql_auxprop_lookup(void *glob_context, - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin create statement from %s %s %s\n", @@ -1090,3 +1095,3 @@ static int sql_auxprop_lookup(void *glob_context, } else { - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin doing query %s\n", query); @@ -1112,5 +1117,6 @@ static int sql_auxprop_lookup(void *glob_context, if (do_txn) { - sparams->utils->log(NULL, SASL_LOG_DEBUG, "commit transaction"); + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, + "commit transaction"); if (settings->sql_engine->sql_commit_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to commit transaction\n"); @@ -1162,3 +1168,3 @@ static int sql_auxprop_store(void *glob_context, - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin Parse the username %s\n", user); @@ -1205,3 +1211,3 @@ static int sql_auxprop_store(void *glob_context, if (!conn) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "sql plugin couldn't connect to any host\n"); @@ -1214,3 +1220,3 @@ static int sql_auxprop_store(void *glob_context, if (settings->sql_engine->sql_begin_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to begin transaction\n"); @@ -1254,3 +1260,3 @@ static int sql_auxprop_store(void *glob_context, sparams->utils); - sparams->utils->log(NULL, SASL_LOG_DEBUG, + sparams->utils->log(sparams->utils->conn, SASL_LOG_DEBUG, "sql plugin doing statement %s\n", @@ -1269,6 +1275,6 @@ static int sql_auxprop_store(void *glob_context, if (ret != SASL_OK) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Failed to store auxprop; aborting transaction\n"); if (settings->sql_engine->sql_rollback_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to rollback transaction\n"); @@ -1277,3 +1283,3 @@ static int sql_auxprop_store(void *glob_context, else if (settings->sql_engine->sql_commit_txn(conn, sparams->utils)) { - sparams->utils->log(NULL, SASL_LOG_ERR, + sparams->utils->log(sparams->utils->conn, SASL_LOG_ERR, "Unable to commit transaction\n"); @@ -1303,3 +1309,3 @@ static void sql_auxprop_free(void *glob_context, const sasl_utils_t *utils) - utils->log(NULL, SASL_LOG_DEBUG, "sql freeing memory\n"); + utils->log(utils->conn, SASL_LOG_DEBUG, "sql freeing memory\n"); @@ -1346,3 +1352,3 @@ int sql_auxprop_plug_init(const sasl_utils_t *utils, if (!sql_exists(settings->sql_select)) { - utils->log(NULL, SASL_LOG_ERR, "sql_select option missing"); + utils->log(utils->conn, SASL_LOG_ERR, "sql_select option missing"); utils->free(settings); @@ -1351,3 +1357,3 @@ int sql_auxprop_plug_init(const sasl_utils_t *utils, - utils->log(NULL, SASL_LOG_DEBUG, + utils->log(utils->conn, SASL_LOG_DEBUG, "sql auxprop plugin using %s engine\n",