aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordan <dan@noemail.net>2010-10-21 15:12:44 +0000
committerdan <dan@noemail.net>2010-10-21 15:12:44 +0000
commit06b5db0e3934d8a3dad7ca44257cb4f3c02b4208 (patch)
treecfbb65882b304bc2c6fa4378203369f7db4dd964 /src
parent3edd8a555d4f45e9778fe709c0be6ab3ab9c9a75 (diff)
downloadsqlite-06b5db0e3934d8a3dad7ca44257cb4f3c02b4208.tar.gz
sqlite-06b5db0e3934d8a3dad7ca44257cb4f3c02b4208.zip
Fix some segfaults that could occur in obscure circumstances where error messages contained characters that could be mistaken for printf format specifiers.
FossilOrigin-Name: f91471e7234db490f97298b1ccb8d6c7fc45b089
Diffstat (limited to 'src')
-rw-r--r--src/vdbeblob.c4
-rw-r--r--src/vtab.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/vdbeblob.c b/src/vdbeblob.c
index b2b9f0ed0..38587ee56 100644
--- a/src/vdbeblob.c
+++ b/src/vdbeblob.c
@@ -231,7 +231,7 @@ int sqlite3_blob_open(
nAttempt++;
rc = sqlite3_finalize((sqlite3_stmt *)v);
sqlite3DbFree(db, zErr);
- zErr = sqlite3MPrintf(db, sqlite3_errmsg(db));
+ zErr = sqlite3MPrintf(db, "%s", sqlite3_errmsg(db));
v = 0;
}
} while( nAttempt<5 && rc==SQLITE_SCHEMA );
@@ -278,7 +278,7 @@ blob_open_out:
if( v && (rc!=SQLITE_OK || db->mallocFailed) ){
sqlite3VdbeFinalize(v);
}
- sqlite3Error(db, rc, zErr);
+ sqlite3Error(db, rc, (zErr ? "%s" : 0), zErr);
sqlite3DbFree(db, zErr);
sqlite3StackFree(db, pParse);
rc = sqlite3ApiExit(db, rc);
diff --git a/src/vtab.c b/src/vtab.c
index 4d0595f2b..e460ee59e 100644
--- a/src/vtab.c
+++ b/src/vtab.c
@@ -672,7 +672,7 @@ int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
}
db->pVTab = 0;
}else{
- sqlite3Error(db, SQLITE_ERROR, zErr);
+ sqlite3Error(db, SQLITE_ERROR, (zErr ? "%s" : 0), zErr);
sqlite3DbFree(db, zErr);
rc = SQLITE_ERROR;
}