]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add a test to ensure an application does not try to create a geopoly
authordrh <>
Sat, 30 May 2026 13:25:49 +0000 (13:25 +0000)
committerdrh <>
Sat, 30 May 2026 13:25:49 +0000 (13:25 +0000)
virtual table with too many columns.

FossilOrigin-Name: 00dc6063077080c7922c335f04bc1a34a7c8c8c3e85b8771c3133d264af3119e

ext/rtree/geopoly.c
ext/rtree/rtree.c
manifest
manifest.uuid

index 22166a6f9ebccfc5bd45410f4284a8147a6c6d1e..673c880136b6ce34914714b4ac44f4d174d69904 100644 (file)
@@ -1251,6 +1251,11 @@ static int geopolyInit(
   int ii;
   (void)pAux;
 
+  if( argc>=RTREE_MAX_AUX_COLUMN+4 ){
+    *pzErr = sqlite3_mprintf("Too many columns for a geopoly table");
+    return SQLITE_ERROR;
+  }
+
   sqlite3_vtab_config(db, SQLITE_VTAB_CONSTRAINT_SUPPORT, 1);
   sqlite3_vtab_config(db, SQLITE_VTAB_INNOCUOUS);
 
index c0320cecab307d2df58bf57df9df66fef2ecf74d..721acfae12082fc3aa106d02bc6bf3017e642cac 100644 (file)
@@ -166,7 +166,7 @@ struct Rtree {
   u8 eCoordType;              /* RTREE_COORD_REAL32 or RTREE_COORD_INT32 */
   u8 nBytesPerCell;           /* Bytes consumed per cell */
   u8 inWrTrans;               /* True if inside write transaction */
-  u8 nAux;                    /* # of auxiliary columns in %_rowid */
+  u16 nAux;                   /* # of auxiliary columns in %_rowid */
 #ifdef SQLITE_ENABLE_GEOPOLY
   u8 nAuxNotNull;             /* Number of initial not-null aux columns */
 #endif
@@ -3644,7 +3644,7 @@ static int rtreeInit(
     "Auxiliary rtree columns must be last"                /* 4 */
   };
 
-  assert( RTREE_MAX_AUX_COLUMN<256 ); /* Aux columns counted by a u8 */
+  assert( RTREE_MAX_AUX_COLUMN<256 );
   if( argc<6 || argc>RTREE_MAX_AUX_COLUMN+3 ){
     *pzErr = sqlite3_mprintf("%s", aErrMsg[2 + (argc>=6)]);
     return SQLITE_ERROR;
index 18427646b74c403c48dc06f642aacf3e6deea691..afbc85a4a4aa6ae7e601a7c6529a6eb728b38e25 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sthe\suntested\sand\sundocumented\s"scrub"\sutility\sprogram.\s\sIt\swas\swritten\nin\s2016,\sbut\smade\sobsolete\sby\sthe\sVACUUM\sINTO\scommand\sin\s2019.
-D 2026-05-30T10:15:58.262
+C Add\sa\stest\sto\sensure\san\sapplication\sdoes\snot\stry\sto\screate\sa\sgeopoly\nvirtual\stable\swith\stoo\smany\scolumns.
+D 2026-05-30T13:25:49.271
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -490,8 +490,8 @@ F ext/recover/sqlite3recover.c dfbfca5a8e4909333e5aa3749bcffb5dd7e396de9541c338f
 F ext/recover/sqlite3recover.h 011c799f02deb70ab685916f6f538e6bb32c4e0025e79bfd0e24ff9c74820959
 F ext/recover/test_recover.c 3d0fb1df7823f5bc22a0b93955034d16a2dfa2eb1e443e9a0123a77f120599a3
 F ext/rtree/README 734aa36238bcd2dee91db5dba107d5fcbdb02396612811377a8ad50f1272b1c1
-F ext/rtree/geopoly.c bd1971479184d559499ff3087c37f2823977d7b0ec80916141ae66f70345c88d
-F ext/rtree/rtree.c acc098e82686fa278c20973d601b4c2489389f5d580d42efe0f799d2cf8cdf38
+F ext/rtree/geopoly.c 77bad24162b6ae84a2fd6de3f1f8ad0b255a4ceb572f50f8771d1ac9d4d986d8
+F ext/rtree/rtree.c a53d91522db6fa01bdaaa646285a5402a43334a319a8ca6bcb7362ec07731b76
 F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412
 F ext/rtree/rtree1.test e0608db762b2aadca0ecb6f97396cf66244490adc3ba88f2a292b27be3e1da3e
 F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d
@@ -2198,9 +2198,9 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 9498dade8754909d6fadc8cdff44dafc7770d53a1984ba27a00317ecd7e2f3dd
-Q +27d67fb175e839f6e7450f54166b52e0a6137c075758511da32fd82c57c310c4
-R b91d37bdca97ad186fce9853366f8659
+P 20c458172e0b09f7ada7f8cb8be95450c3988e620cbf6f174470bf8e78dcfbf0
+Q +2c605bfb1562d7a3609ad6ffd7446def12f1ac7084e41b9c6723e998c156501d
+R 9bd71976e294e44e10ac2988d74e546e
 U drh
-Z fdd03da4c1cf3716f3c4bbd7e23785a2
+Z 531190ac19f7dbc9c7f35efa625f7248
 # Remove this line to create a well-formed Fossil manifest.
index b605bde0e9f41adb73b893b6138bb9944f348d39..051be640e163e0e1743e57d3c70ecf3f0115c0d5 100644 (file)
@@ -1 +1 @@
-20c458172e0b09f7ada7f8cb8be95450c3988e620cbf6f174470bf8e78dcfbf0
+00dc6063077080c7922c335f04bc1a34a7c8c8c3e85b8771c3133d264af3119e