]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid an assertion fault that can occur with invalid UTF8 on the LENGTH()
authordrh <drh@noemail.net>
Fri, 2 Jan 2004 13:17:48 +0000 (13:17 +0000)
committerdrh <drh@noemail.net>
Fri, 2 Jan 2004 13:17:48 +0000 (13:17 +0000)
function.  Ticket #548. (CVS 1154)

FossilOrigin-Name: 7080fc39eaf98ef7a7d1c1819603f67841f35c72

manifest
manifest.uuid
src/func.c

index 126671933b9ba2f5cbd20128e994af158054920d..ecc6d024e0891a20f4410b001438848a0f49c5f1 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sunused\scode\sfrom\sthe\sintegrity_check\slogic.\s\sTicket\s#545.\s(CVS\s1153)
-D 2004-01-01T12:33:43
+C Avoid\san\sassertion\sfault\sthat\scan\soccur\swith\sinvalid\sUTF8\son\sthe\sLENGTH()\nfunction.\s\sTicket\s#548.\s(CVS\s1154)
+D 2004-01-02T13:17:49
 F Makefile.in 0515ff9218ad8d5a8f6220f0494b8ef94c67013b
 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -32,7 +32,7 @@ F src/date.c 13775c2dedfc805ebf3f6507bad676f7c974a241
 F src/delete.c 0f81e6799c089487615d38e042a2de4d2d6192bc
 F src/encode.c 25ea901a9cefb3d93774afa4a06b57cb58acf544
 F src/expr.c a14401a54e5923f3e52b6d04a83813d150f43f33
-F src/func.c b6ad8e786b5a0a9e2a80f617bdd5c0eb124ba652
+F src/func.c 62cf8fae8147c0301d1c6a4a94fe0a78f7aa5b33
 F src/hash.c 058f077c1f36f266581aa16f907a3903abf64aa3
 F src/hash.h cd0433998bc1a3759d244e1637fe5a3c13b53bf8
 F src/insert.c 01f66866f35c986eab4a57373ca689a3255ef2df
@@ -179,7 +179,7 @@ F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3
 F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
-P 597b33f696c0cde84529cd06a8f95a8ccc8f1e8e
-R 6fc771048b85c788ec8a93bdefbc0ab5
+P ee51e205fb6ef412db6a46077e8bc1554aadcca1
+R 2e756876c3ede7a87eda0f39f9f56c1d
 U drh
-Z 15be029d265569e940521d0e79e32463
+Z 1a53475c3ab7b74045a91b277608d8a9
index e9e099eeec5df4a936cb6e7c916a36df7ac175ab..8a6bfa6adddf9c16a1b493523dcf1f0d4d1d50fc 100644 (file)
@@ -1 +1 @@
-ee51e205fb6ef412db6a46077e8bc1554aadcca1
\ No newline at end of file
+7080fc39eaf98ef7a7d1c1819603f67841f35c72
\ No newline at end of file
index 572cc49657428cc067eebb025d6591be994e80b4..643a1513bc9b6e1cdeaeb6e5f8bd7bb44098640c 100644 (file)
@@ -16,7 +16,7 @@
 ** sqliteRegisterBuildinFunctions() found at the bottom of the file.
 ** All other code has file scope.
 **
-** $Id: func.c,v 1.34 2003/12/23 02:17:35 drh Exp $
+** $Id: func.c,v 1.35 2004/01/02 13:17:49 drh Exp $
 */
 #include <ctype.h>
 #include <math.h>
@@ -122,13 +122,11 @@ static void substrFunc(sqlite_func *context, int argc, const char **argv){
     p2 = len-p1;
   }
 #ifdef SQLITE_UTF8
-  for(i=0; i<p1; i++){
-    assert( z[i] );
+  for(i=0; i<p1 && z[i]; i++){
     if( (z[i]&0xc0)==0x80 ) p1++;
   }
   while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p1++; }
-  for(; i<p1+p2; i++){
-    assert( z[i] );
+  for(; i<p1+p2 && z[i]; i++){
     if( (z[i]&0xc0)==0x80 ) p2++;
   }
   while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p2++; }