From: drh <> Date: Tue, 23 Jun 2026 19:08:18 +0000 (+0000) Subject: Do not allow internal-use-only functions to be coded, anywhere, unless X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=72d26f46603e3bc870fb4f6d051f40c4f70d1419;p=thirdparty%2Fsqlite.git Do not allow internal-use-only functions to be coded, anywhere, unless inside of a nested parse (which is the case for ALTER TABLE) or if the appropriate test-control is activated. [bugs:/info/2026-06-23T15:49:27Z|Bug 2026-06-23T15:49:27Z]. FossilOrigin-Name: a145307e4d0b621c5493cecc7c826e8422cbd8dbc8cd9a042b8ec9e05d389eb6 --- diff --git a/manifest b/manifest index 474434a8a8..0ebe804215 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stypo\sin\sa\scomment.\s\sNo\scode\schanges. -D 2026-06-23T15:35:29.301 +C Do\snot\sallow\sinternal-use-only\sfunctions\sto\sbe\scoded,\sanywhere,\sunless\ninside\sof\sa\snested\sparse\s(which\sis\sthe\scase\sfor\sALTER\sTABLE)\sor\sif\nthe\sappropriate\stest-control\sis\sactivated.\n[bugs:/info/2026-06-23T15:49:27Z|Bug\s2026-06-23T15:49:27Z]. +D 2026-06-23T19:08:18.383 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -688,7 +688,7 @@ F src/date.c 86d9530729eeb5b3d833e7403de495f4d4b79f3d5f7e74bcc8abda237f5aeafb F src/dbpage.c c6a9de13b0a01f0bc94a41e16213ab1ecd15ccfe86df7255ced40fda9446257d F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451 -F src/expr.c e97dd9f6ada4c448764e225d8963091bf630b3efb2c92e4d0762571cca2a14e5 +F src/expr.c db0f3e084f4bb2b249a5890dc9a0d3614d503cda009357bfdeb040f96322ccfe F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 931f74cec1dc8038a0217ef340c91ce147dd1bbed08dc40c47ee0ec6edfffb08 F src/func.c 7e049176003271095ba560bca90995c8cb7c1e944aee539513daba015b172a18 @@ -2208,8 +2208,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P d85204bbd92f362c5c7d744d59f7be6923cdbf1f15f7220e70af4090161c24c2 -R 3d8238f950b24c1c1888b28468416531 +P 8a535a36a90cf12b783469289a882d1313038d444b4a7f04e3495ae9bdec416d +R bdcde85ab85e1f4afa8f626c7e398d47 U drh -Z 193f264a876f59696aa4bf230f8008b3 +Z 99855b74f04f71968ba1547588fd3439 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 929080867a..37513c06a4 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8a535a36a90cf12b783469289a882d1313038d444b4a7f04e3495ae9bdec416d +a145307e4d0b621c5493cecc7c826e8422cbd8dbc8cd9a042b8ec9e05d389eb6 diff --git a/src/expr.c b/src/expr.c index 6ea2a5ae22..3b9a0170c8 100644 --- a/src/expr.c +++ b/src/expr.c @@ -5384,7 +5384,12 @@ expr_code_doover: pDef = sqlite3FindFunction(db, "unknown", nFarg, enc, 0); } #endif - if( pDef==0 || pDef->xFinalize!=0 ){ + if( pDef==0 + || pDef->xFinalize!=0 + || ((pDef->funcFlags & SQLITE_FUNC_INTERNAL)!=0 && + !pParse->nested && + (db->mDbFlags & DBFLAG_InternalFunc)==0) + ){ sqlite3ErrorMsg(pParse, "unknown function: %#T()", pExpr); break; }