From: drh <> Date: Sat, 30 May 2026 13:23:25 +0000 (+0000) Subject: Add a test to ensure an application does not try to create a geopoly X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=72f0bd609cadbef78208324fb6118f1b3eb5fae4;p=thirdparty%2Fsqlite.git Add a test to ensure an application does not try to create a geopoly virtual table with too many columns. [bugs:/info/2026-05-30T12:47:27Z|Bug 2026-05-30T12:47:27Z]. FossilOrigin-Name: 2c605bfb1562d7a3609ad6ffd7446def12f1ac7084e41b9c6723e998c156501d --- diff --git a/ext/rtree/geopoly.c b/ext/rtree/geopoly.c index 22166a6f9e..673c880136 100644 --- a/ext/rtree/geopoly.c +++ b/ext/rtree/geopoly.c @@ -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); diff --git a/ext/rtree/rtree.c b/ext/rtree/rtree.c index c0320cecab..721acfae12 100644 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@ -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; diff --git a/manifest b/manifest index 19d10e1af5..07189ea88a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Harden\sthe\sdiskused.c\sextension\sagainst\sNULL\spointer\sdeferences\sthat\nmight\shave\spreviously\soccurred\swhen\sgiven\sa\scorrupt\sdatabase\sfile.\n[bug:/info/2026-05-30T07:08:55Z|Bug\s2026-05-30T07:08:55Z]. -D 2026-05-30T10:24:03.135 +C Add\sa\stest\sto\sensure\san\sapplication\sdoes\snot\stry\sto\screate\sa\sgeopoly\nvirtual\stable\swith\stoo\smany\scolumns.\n[bugs:/info/2026-05-30T12:47:27Z|Bug\s2026-05-30T12:47:27Z]. +D 2026-05-30T13:23:25.636 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -492,8 +492,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 @@ -2207,8 +2207,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 27d67fb175e839f6e7450f54166b52e0a6137c075758511da32fd82c57c310c4 -R f968cb7dbc43f7c991f21d31c0bc4fbd +P 7487a1c59d3aaea9f8b2569dca76bbccf21948b1e7bd8a1d841e04382db696f4 +R ebb1f1b11844a09935dce12f33db6f4d U drh -Z a55916d705f288bc89a8793a3b095bb8 +Z efd21511355ede67a795e7cec352e724 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 1c129f5e6c..7cf91bc805 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7487a1c59d3aaea9f8b2569dca76bbccf21948b1e7bd8a1d841e04382db696f4 +2c605bfb1562d7a3609ad6ffd7446def12f1ac7084e41b9c6723e998c156501d