aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-01-04 04:28:11 +0000
committerdrh <drh@noemail.net>2016-01-04 04:28:11 +0000
commit6044bf8bf3c5cada8e985a6fefa3aededbc19dea (patch)
treea8eaad1bccda529dbd3f263348ac4f9eb75cb28a /src
parent9fbc885afcbf09b90322bab8f0daf613df2fa26b (diff)
downloadsqlite-6044bf8bf3c5cada8e985a6fefa3aededbc19dea.tar.gz
sqlite-6044bf8bf3c5cada8e985a6fefa3aededbc19dea.zip
Limit the length of sqlite3_mprintf() output to 2^30 bytes, even if
SQLITE_MAX_LENGTH is set larger at compile-time. FossilOrigin-Name: d655a665acfae676d30e90e3731f483bee6acc63
Diffstat (limited to 'src')
-rw-r--r--src/printf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/printf.c b/src/printf.c
index 969950c15..fed9acd73 100644
--- a/src/printf.c
+++ b/src/printf.c
@@ -965,7 +965,12 @@ char *sqlite3_vmprintf(const char *zFormat, va_list ap){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
+#if SQLITE_MAX_LENGTH<0x40000000
sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), SQLITE_MAX_LENGTH);
+#else
+ sqlite3StrAccumInit(&acc, 0, zBase, sizeof(zBase), 0x3fffffff);
+#endif
+
sqlite3VXPrintf(&acc, 0, zFormat, ap);
z = sqlite3StrAccumFinish(&acc);
return z;