]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid a segfault if NULL is passed as the first argument to SQL scalar function fts3_...
authordan <dan@noemail.net>
Sat, 21 Mar 2015 19:35:09 +0000 (19:35 +0000)
committerdan <dan@noemail.net>
Sat, 21 Mar 2015 19:35:09 +0000 (19:35 +0000)
FossilOrigin-Name: 6d0989695b486275824c14d5f88357267c1e8104

ext/fts3/fts3_tokenizer.c
manifest
manifest.uuid
test/fts3atoken.test

index 8bb8b178baca80a4198c2b0eccf11c565d0b1abd..2b985f5f33de2f0932e0790f98a89ab3a793211a 100644 (file)
@@ -69,7 +69,7 @@ static void scalarFunc(
   if( argc==2 ){
     void *pOld;
     int n = sqlite3_value_bytes(argv[1]);
-    if( n!=sizeof(pPtr) ){
+    if( zName==0 || n!=sizeof(pPtr) ){
       sqlite3_result_error(context, "argument type mismatch", -1);
       return;
     }
@@ -80,7 +80,9 @@ static void scalarFunc(
       return;
     }
   }else{
-    pPtr = sqlite3Fts3HashFind(pHash, zName, nName);
+    if( zName ){
+      pPtr = sqlite3Fts3HashFind(pHash, zName, nName);
+    }
     if( !pPtr ){
       char *zErr = sqlite3_mprintf("unknown tokenizer: %s", zName);
       sqlite3_result_error(context, zErr, -1);
index 227d2396bfe70c968d8a8c37cbb0e090d90b140d..c02318a20e3f3af3a66d4beef27221e99df339c4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\swalblock.test\sto\sblock\san\sexternal\sprocess\sfor\s10\sseconds,\snot\s5.\s5\sseconds\sis\snot\slong\senough\sto\stell\sthe\sdifference\sbetween\sa\sblocking\slock\sand\sa\sseries\sof\sretries.
-D 2015-03-21T16:40:24.176
+C Avoid\sa\ssegfault\sif\sNULL\sis\spassed\sas\sthe\sfirst\sargument\sto\sSQL\sscalar\sfunction\sfts3_tokenizer().
+D 2015-03-21T19:35:09.439
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 88a3e6261286db378fdffa1124cad11b3c05f5bb
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -91,7 +91,7 @@ F ext/fts3/fts3_snippet.c 52c2dcf410b1f9af5a44d81a2cf8c68ed1cb5283
 F ext/fts3/fts3_term.c a521f75132f9a495bdca1bdd45949b3191c52763
 F ext/fts3/fts3_test.c 8a3a78c4458b2d7c631fcf4b152a5cd656fa7038
 F ext/fts3/fts3_tokenize_vtab.c becc661223db7898b213f9e8a23d75bac02408c9
-F ext/fts3/fts3_tokenizer.c 0f9e6e01de1e1fe2e79074e3cf70ed1b1ea848b7
+F ext/fts3/fts3_tokenizer.c b7e586baeb8d0a061cf01a0f7081d88f3935eecf
 F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
 F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004
 F ext/fts3/fts3_unicode.c a93f5edc0aff44ef8b06d7cb55b52026541ca145
@@ -564,7 +564,7 @@ F test/fts3al.test 07d64326e79bbdbab20ee87fc3328fbf01641c9f
 F test/fts3am.test 218aa6ba0dfc50c7c16b2022aac5c6be593d08d8
 F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
 F test/fts3ao.test 3e4e3d5e75c076520341d0bdf4eb17c00e8cbde2
-F test/fts3atoken.test 95c721d71acb141eb754701b15a8e60bb6eb4263
+F test/fts3atoken.test e3a126365131a6db52efc20a9a6053cd44e5f289
 F test/fts3auto.test b981fea19b132b4e6878f50d7c1f369b28f68eb9
 F test/fts3aux1.test f8f287a4a73f381f8fa15b6a70f36245f903d221
 F test/fts3aux2.test 7ae2b2c13aefdf4169279a27a5f51780ce57f6ba
@@ -1246,7 +1246,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 67d69d21de32816894be53e4b446656d4174eb0d
-R fd1744ba13eb7ca730963f1f28c9bbe1
+P 717335fcdb15430ed977cbc98d30345b71728b66
+R 9a44cfc186a78e5b971a0e9f8c3b76c2
 U dan
-Z 766817d70f1d0d42f94e17731574ace5
+Z 068927d1dd3aa367e2b9f4f743992531
index 183e639eed32e3e0297c20aaa49d1981a5e34d03..98bf63796152fc22ca814548257438de18f5235a 100644 (file)
@@ -1 +1 @@
-717335fcdb15430ed977cbc98d30345b71728b66
\ No newline at end of file
+6d0989695b486275824c14d5f88357267c1e8104
\ No newline at end of file
index 904a9a3fc3e2f250cf822904de6c8d978fcf0be4..88e3d4f72bccf786867075ed431633374a4de2cd 100644 (file)
@@ -203,5 +203,15 @@ do_catchsql_test 6.1.3 {
   CREATE VIRTUAL TABLE t3 USING fts4(tokenize="   ");
 } {1 {unknown tokenizer:    }}
 
+do_catchsql_test 6.2.1 {
+  SELECT fts3_tokenizer(NULL);
+} {1 {unknown tokenizer: }}
+do_catchsql_test 6.2.2 {
+  SELECT fts3_tokenizer(NULL, X'1234567812345678');
+} {1 {argument type mismatch}}
+do_catchsql_test 6.2.3 {
+  SELECT fts3_tokenizer(NULL, X'12345678');
+} {1 {argument type mismatch}}
+
 
 finish_test