diff options
author | drh <> | 2023-07-21 18:38:59 +0000 |
---|---|---|
committer | drh <> | 2023-07-21 18:38:59 +0000 |
commit | 028acd974f3c03c489dfaa02da618af99613cde7 (patch) | |
tree | 4a3a819ba1c4ff50f2a74eec1eaa8fe3b6ddb981 /src/util.c | |
parent | 569700a72e58a1cf9efc7fb743768a64cfd77d3c (diff) | |
download | sqlite-028acd974f3c03c489dfaa02da618af99613cde7.tar.gz sqlite-028acd974f3c03c489dfaa02da618af99613cde7.zip |
Avoid a potentially large strlen() in sqlite3DecOrHexToI64().
FossilOrigin-Name: 5413b02bb629b9cbb76f7e688e94ebcf24276c01436d3feb73ff57c036e1d2aa
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/util.c b/src/util.c index 409482d39..1200aef0e 100644 --- a/src/util.c +++ b/src/util.c @@ -846,7 +846,9 @@ int sqlite3DecOrHexToI64(const char *z, i64 *pOut){ }else #endif /* SQLITE_OMIT_HEX_INTEGER */ { - return sqlite3Atoi64(z, pOut, sqlite3Strlen30(z), SQLITE_UTF8); + int n = (int)(0x3fffffff&strspn(z,"+- \n\t0123456789")); + if( z[n] ) n++; + return sqlite3Atoi64(z, pOut, n, SQLITE_UTF8); } } |