From: dan Date: Thu, 4 Dec 2025 16:44:11 +0000 (+0000) Subject: Limit compile time value SQLITE_MAX_SQL_LENGTH to 1024 less than 2^31, or 2147482624... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5192fec12310cbbb7ac4049eafb03bc65e1bbf41;p=thirdparty%2Fsqlite.git Limit compile time value SQLITE_MAX_SQL_LENGTH to 1024 less than 2^31, or 2147482624. This is to avoid having to deal with edge cases related to 32-bit integer overflow that can only occur in custom builds. FossilOrigin-Name: d73364555d213e443d8400ed69b134006f4e2fe0054d74fe0828ff01effe5cd2 --- diff --git a/manifest b/manifest index 83fad04937..e0c233ddc1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Enable\sTEMP\striggers\sto\sreference\stables\sin\sthe\smain\sschema. -D 2025-12-04T13:42:53.023 +C Limit\scompile\stime\svalue\sSQLITE_MAX_SQL_LENGTH\sto\s1024\sless\sthan\s2^31,\sor\s2147482624.\sThis\sis\sto\savoid\shaving\sto\sdeal\swith\sedge\scases\srelated\sto\s32-bit\sinteger\soverflow\sthat\scan\sonly\soccur\sin\scustom\sbuilds. +D 2025-12-04T16:44:11.298 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -700,7 +700,7 @@ F src/insert.c dfd311b0ac2d4f6359e62013db67799757f4d2cc56cca5c10f4888acfbbfa3fd F src/json.c fb031340edee159c07ad37dbe668ffe945ed86f525b0eb3822e4a67cbc498a72 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c 4747f72084dc80520a2d23e5bb0bc0760672208a81a2b115ce0b657acd65edf4 -F src/main.c c99e86fd7dc6c8c2c0f67395562e3300bca2780b845db9bdc2bdac6acf13c6aa +F src/main.c 8ee5d36123330e7a6a8ef3acd6c05cdc254d6d4ef6ca2e472c702ac1ee9a5617 F src/malloc.c 410e570b30c26cc36e3372577df50f7a96ee3eed5b2b161c6b6b48773c650c5e F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2 @@ -742,7 +742,7 @@ F src/sqlite.h.in 706cacea5308b0244fb6cec92e08310fb427a125375c64137cc1f878ae4cf5 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479 F src/sqlite3ext.h 5d5330f5f8461f5ce74960436ddcfa53ecd09c2b8b23901e22ae38aec3243998 F src/sqliteInt.h af67bc95fa6b66cd3c7f3d18d2d040ad386e4cbb02965ee318cc721ee9d5fa45 -F src/sqliteLimit.h 0a5516b4ec192a205c541e05f67009028a9451dc6678aae4cf8e68596903c246 +F src/sqliteLimit.h 7e705474d59912388832cc5465edbc0dbb552872e23452812846e90d280987f3 F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 F src/tclsqlite.c 4b6f6b142b951a8a127e0cbd2e37284fc71f8e6a391ec8c6188fb831b51ec0b8 @@ -2184,9 +2184,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P aef5397569d65d2971367b0278fe3a6f42544cf771572e7d046e2472f052364d 4f79434f5b52470291dcd09e31fdefba708d0243a2b60966536c6cb91451d203 -R 1b1d291f620f9976802e4c1eb32b7e7e -T +closed 4f79434f5b52470291dcd09e31fdefba708d0243a2b60966536c6cb91451d203 -U drh -Z 88a8c793081990ff4d18bca6e2e33f30 +P 307a500aa6a1f3ac8b154d2e981bb30c90236be26a8c9a8f318d5982c62440dd +R 1901d2d7906ab24deca78086256a7fb1 +U dan +Z 8a6f9d64c3e534e1ce9c8fde1cff2900 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index e000359392..1f6d3e51cc 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -307a500aa6a1f3ac8b154d2e981bb30c90236be26a8c9a8f318d5982c62440dd +d73364555d213e443d8400ed69b134006f4e2fe0054d74fe0828ff01effe5cd2 diff --git a/src/main.c b/src/main.c index 4e2bee499f..6e9d7d599d 100644 --- a/src/main.c +++ b/src/main.c @@ -2945,6 +2945,9 @@ static const int aHardLimit[] = { #if SQLITE_MAX_SQL_LENGTH>SQLITE_MAX_LENGTH # error SQLITE_MAX_SQL_LENGTH must not be greater than SQLITE_MAX_LENGTH #endif +#if SQLITE_MAX_SQL_LENGTH>2147482624 /* 1024 less than 2^31 */ +# error SQLITE_MAX_SQL_LENGTH must not be greater than 2147482624 +#endif #if SQLITE_MAX_COMPOUND_SELECT<2 # error SQLITE_MAX_COMPOUND_SELECT must be at least 2 #endif diff --git a/src/sqliteLimit.h b/src/sqliteLimit.h index d2689a2720..ea49d6ba05 100644 --- a/src/sqliteLimit.h +++ b/src/sqliteLimit.h @@ -60,6 +60,9 @@ ** It used to be the case that setting this value to zero would ** turn the limit off. That is no longer true. It is not possible ** to turn this limit off. +** +** The hard limit is the largest possible 32-bit signed integer less +** 1024, or 2147482624. */ #ifndef SQLITE_MAX_SQL_LENGTH # define SQLITE_MAX_SQL_LENGTH 1000000000