summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2021-11-30 10:55:51 +0000
committerPablo Neira Ayuso <pablo@netfilter.org>2022-01-03 16:29:56 +0100
commitdd80349ac72244049ab8f57023ab5d362e3843f1 (patch)
treee1e120a059eb56356d40db8ba89fd2a6909b6a0c
parent67b0be90f16f12b875a70e7a5ae10c5a7b584ece (diff)
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 <jeremy@azazel.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--output/sqlite3/ulogd_output_SQLITE3.c20
1 files changed, 13 insertions, 7 deletions
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;
}