summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2012-10-19 18:24:18 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2012-10-19 18:25:01 +0200
commit97f695d099e60121700d47512172f1d6839dfb2a (patch)
treee24f8ca703f478267e7f1306dab16ecd8dc7a551
parent493604d52b466fa7d8444582f547b229710f1dd4 (diff)
downloadeurephia-97f695d099e60121700d47512172f1d6839dfb2a.tar.gz
eurephia-97f695d099e60121700d47512172f1d6839dfb2a.tar.xz
eurephia-97f695d099e60121700d47512172f1d6839dfb2a.zip
sqlite3: Improve error handling if memory alloc fails for SQL query string
Signed-off-by: David Sommerseth <dazo@users.sourceforge.net> (cherry picked from commit 2613675111387fb0753d31be74b5e0a362389ef8)
-rw-r--r--database/sqlite/sqlite.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/database/sqlite/sqlite.c b/database/sqlite/sqlite.c
index 0f4e0e6..a17f4b0 100644
--- a/database/sqlite/sqlite.c
+++ b/database/sqlite/sqlite.c
@@ -70,7 +70,7 @@ static void _sqlite_set_error(dbresult *dbres, ErrorSeverity sev, const char *qu
dbres->errSeverity = sev;
dbres->errMsg = strdup(errbuf);
- dbres->query = strdup(query);
+ dbres->query = strdup_nullsafe(query);
}
/**
@@ -327,7 +327,7 @@ void sqlite_log_error(eurephiaCTX *ctx, dbresult *dbres) {
if( dbres->status != dbSUCCESS ) {
eurephia_log(ctx, LOG_ERROR, 4, "SQL Error: %s", dbres->errMsg);
}
- DEBUG(ctx, 33, "SQL Query: %s", dbres->query);
+ DEBUG(ctx, 33, "SQL Query: %s", (dbres->query != NULL ? dbres->query : "(None)"));
}
@@ -397,6 +397,12 @@ dbresult *sqlite_query(eurephiaCTX *ctx, const char *fmt, ... ) {
sql = sqlite3_vmprintf(fmt, ap);
va_end(ap);
+ if( sql == NULL ) {
+ _sqlite_set_error(dbres, sevPANIC, NULL, "Could not allocate memory for SQL query string");
+ goto exit;
+ }
+
+
if( ctx->dbc == NULL ) {
_sqlite_set_error(dbres, sevPANIC, sql, "No open database connection to perfom SQL query to");
goto exit;