summaryrefslogtreecommitdiffstats
path: root/database
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:24:18 +0200
commit2613675111387fb0753d31be74b5e0a362389ef8 (patch)
treea9012eeecdd4817103ffc62de4e6566c8263a55f /database
parent00bd0ac4cc901004aeaf4548813bb465bce5243f (diff)
downloadeurephia-2613675111387fb0753d31be74b5e0a362389ef8.tar.gz
eurephia-2613675111387fb0753d31be74b5e0a362389ef8.tar.xz
eurephia-2613675111387fb0753d31be74b5e0a362389ef8.zip
sqlite3: Improve error handling if memory alloc fails for SQL query string
Signed-off-by: David Sommerseth <dazo@users.sourceforge.net>
Diffstat (limited to 'database')
-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;