From: Jeremy Sowden Date: Tue, 30 Nov 2021 10:55:51 +0000 (+0000) Subject: output: SQLITE3: catch errors creating SQL statement X-Git-Tag: ulogd-2.0.8~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd80349ac72244049ab8f57023ab5d362e3843f1;p=thirdparty%2Fulogd2.git output: SQLITE3: catch errors creating SQL statement `sqlite3_createstmt` returns non-zero on error, but the return-value was being ignored. Change the calling code to check the return-value, log an error message and propagate the error. Signed-off-by: Jeremy Sowden Signed-off-by: Pablo Neira Ayuso --- diff --git a/output/sqlite3/ulogd_output_SQLITE3.c b/output/sqlite3/ulogd_output_SQLITE3.c index d4bd1ba..51eab78 100644 --- a/output/sqlite3/ulogd_output_SQLITE3.c +++ b/output/sqlite3/ulogd_output_SQLITE3.c @@ -104,11 +104,14 @@ add_row(struct ulogd_pluginstance *pi) ret = sqlite3_finalize(priv->p_stmt); priv->p_stmt = NULL; - if (ret == SQLITE_SCHEMA) - sqlite3_createstmt(pi); - else { + if (ret != SQLITE_SCHEMA) { ulogd_log(ULOGD_ERROR, "SQLITE3: step: %s\n", - sqlite3_errmsg(priv->dbh)); + sqlite3_errmsg(priv->dbh)); + goto err_reset; + } + if (sqlite3_createstmt(pi) < 0) { + ulogd_log(ULOGD_ERROR, + "SQLITE3: Could not create statement.\n"); goto err_reset; } } @@ -248,8 +251,8 @@ sqlite3_createstmt(struct ulogd_pluginstance *pi) sqlite3_prepare(priv->dbh, priv->stmt, -1, &priv->p_stmt, 0); if (priv->p_stmt == NULL) { ulogd_log(ULOGD_ERROR, "SQLITE3: prepare: %s\n", - sqlite3_errmsg(priv->dbh)); - return 1; + sqlite3_errmsg(priv->dbh)); + return -1; } DEBUGP("statement prepared.\n"); @@ -386,7 +389,10 @@ sqlite3_start(struct ulogd_pluginstance *pi) } /* create and prepare the actual insert statement */ - sqlite3_createstmt(pi); + if (sqlite3_createstmt(pi) < 0) { + ulogd_log(ULOGD_ERROR, "SQLITE3: Could not create statement.\n"); + return -1; + } return 0; }