From 18347d8044a59d7839ebcaa9f9971dbf3ed17b41 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sun, 18 Oct 2026 10:14:50 +0000 Subject: [PATCH] Check the datatype of the second (optional) argument to the log() SQL function and return NULL if it is non-numeric as the documentation says it should. [bugs:/info/2026-10-18T05:05:18Z|Bug 2026-10-18T05:05:18Z] FossilOrigin-Name: a99e577b951fa38fcdff3693072c2f78e546be6a1c187b648f043b499a06768e --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/func.c | 2 +- test/func7.test | 5 +++++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index 1d58ac437e..8bb9579efe 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\san\sincorrect\sassert()\sin\sgenerate_series().\s\sNo\simpact\son\snon-debug\nbuilds.\n[bugs:/info/2026-10-17T09:24:09Z|Bug\s2026-10-17T09:24:09Z] -D 2026-10-17T12:03:36.275 +C Check\sthe\sdatatype\sof\sthe\ssecond\s(optional)\sargument\sto\sthe\slog()\sSQL\nfunction\sand\sreturn\sNULL\sif\sit\sis\snon-numeric\sas\sthe\sdocumentation\ssays\nit\sshould.\n[bugs:/info/2026-10-18T05:05:18Z|Bug\s2026-10-18T05:05:18Z] +D 2026-10-18T10:14:50.771 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -756,7 +756,7 @@ F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451 F src/expr.c c404d1908874e6f8542a81b38a5ef7985581394c34e418f7ed3798e09f4e42d1 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 26788ae6c785d70f9829c4176e9764447014fc73e6ba31e9f1881720a64ae7f1 -F src/func.c 54d96eeafcb6ec4cff92028ea0f7bb09e27b375b248d969aeb80a61e560ef302 +F src/func.c e3099dc33a2fbf2e1e563d49810988dfad3e030d1cd151360d5ecb865c8652a1 F src/global.c 7eea537ac0c113ac55cb2dd4d8fc2a6a91ae478be34231b4efaffc46817fee85 F src/hash.c 03c8c0f4be9e8bcb6de65aa26d34a61d48a9430747084a69f9469fbb00ea52ca F src/hash.h 46b92795a95bfefb210f52f0c316e9d7cdbcdd7e7fcfb0d8be796d3a5767cddf @@ -1314,7 +1314,7 @@ F test/func3.test 6b22dfada95b778d01dba75aa00fa8e6a1fb90d30b859241638e7540edcfb3 F test/func4.test a02e695f62beb31cb092dccf6873ff97543407fff97a5f3ec4da70b5b337bc84 F test/func5.test 863e6d1bd0013d09c17236f8a13ea34008dd857d87d85a13a673960e4c25d82a F test/func6.test 3bc89ec0f2605736d3a118f43d25ef58115a7db4dba8ae939a363917d815c0bb -F test/func7.test c7a866fba2f7c0a49b25b783d36c1e47cd606981c1f016d2cbb9d4d8a99fc533 +F test/func7.test 9896bee8cab608b2ac3a31548e9a1e860fdd1ba30be1707b0d025fee516fdddf F test/func8.test c4e2ecacf9f16e47a245e7a25fbabcc7e78f9c7c41a80f158527cdfdc6dd299d F test/func9.test 32c7d53b9bc99ddd45fad29457add438f2aca43d24920793773a96b13610f552 F test/fuzz-oss1.test 514dcabb24687818ea949fa6760229eaacad74ca70157743ef36d35bbe01ffb0 @@ -2287,8 +2287,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P d43611f653bad426df8dc4ac12d0fff1662245b0715f7e66a023bd1dd129faea -R 4860e4e720900d9865bb628f2bb5e16b +P c5d67762df0507fe58e035b572623f36efb394d08d322bbdb313a2f0da49c734 +R 7227e2346bda99428702d1a8b098b920 U drh -Z 1becf78a83ced1d37cf8fb84d4943e6b +Z 6f06ce634f5d3481d95d17a08a4bd787 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 9cc8caea85..75558e7960 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c5d67762df0507fe58e035b572623f36efb394d08d322bbdb313a2f0da49c734 +a99e577b951fa38fcdff3693072c2f78e546be6a1c187b648f043b499a06768e diff --git a/src/func.c b/src/func.c index 33b25f4d85..32dc1bc975 100644 --- a/src/func.c +++ b/src/func.c @@ -2538,7 +2538,7 @@ static void logFunc( return; } if( argc==2 ){ - switch( sqlite3_value_numeric_type(argv[0]) ){ + switch( sqlite3_value_numeric_type(argv[1]) ){ case SQLITE_INTEGER: case SQLITE_FLOAT: b = log(x); diff --git a/test/func7.test b/test/func7.test index 7d06a87440..b23294544d 100644 --- a/test/func7.test +++ b/test/func7.test @@ -30,6 +30,11 @@ do_execsql_test func7-200 { do_execsql_test func7-210 { SELECT ln(-5), log(-5,100.0); } {{} {}} +db null NULL +do_execsql_test func7-220 { + SELECT log(2,8), log(2,'8'), log(2,'8xyz'), log(2,x'38'); +} {3.0 3.0 NULL NULL} +db null {} # Test cases derived from PostgreSQL documentation #