diff options
author | drh <drh@noemail.net> | 2016-01-04 04:28:11 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2016-01-04 04:28:11 +0000 |
commit | 6044bf8bf3c5cada8e985a6fefa3aededbc19dea (patch) | |
tree | a8eaad1bccda529dbd3f263348ac4f9eb75cb28a /src | |
parent | 9fbc885afcbf09b90322bab8f0daf613df2fa26b (diff) | |
download | sqlite-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.c | 5 |
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; |