Hi,

This will crash SQLite 3.7.4 and 3.6.22:

CREATE VIRTUAL TABLE f USING fts3 (t TEXT, tokenize=icu);
insert into f (docid) values (1);
insert into f (docid) values (2);
insert into f (docid) values (3);
insert into f (docid) values (4);
update f set t = 'test' where docid = 3;

Here is the backtrace:

#0  __strlen_sse2 () at ../sysdeps/i386/i686/multiarch/strlen.S:99
#1  0x080d0b6a in icuOpen (pTokenizer=0x838f538, zInput=0x0, nInput=-1,
ppCursor=0xbfac0188) at sqlite3.c:122808
#2  0x080c9523 in fts3PendingTermsAdd (p=0x8390e20, zText=0x0, iCol=-1,
pnWord=0x838f508) at sqlite3.c:114945
#3  0x080c9b19 in fts3DeleteTerms (pRC=0xbfac0248, p=0x8390e20,
apVal=0x8390780, aSz=0x838f508) at sqlite3.c:115157
#4  0x080cd2be in sqlite3Fts3UpdateMethod (pVtab=0x8390e20, nArg=5,
apVal=0x8390780, pRowid=0xbfac03a0) at sqlite3.c:117228
#5  0x080c502b in fts3UpdateMethod (pVtab=0x8390e20, nArg=5,
apVal=0x8390780, pRowid=0xbfac03a0) at sqlite3.c:111228
#6  0x08083d87 in sqlite3VdbeExec (p=0x8392e10) at sqlite3.c:66140
#7  0x08079a23 in sqlite3Step (p=0x8392e10) at sqlite3.c:58704
#8  0x08079bbd in sqlite3_step (pStmt=0x8392e10) at sqlite3.c:58768
#9  0x0804ba09 in shell_exec (db=0x83819c0, zSql=0x8391660 "update f set
t = 'test' where docid = 3;", xCallback=0x804a381 <shell_callback>,
pArg=0xbfac0678, pzErrMsg=0xbfac0594) at shell.c:1099
#10 0x0804f9cd in process_input (p=0xbfac0678, in=0x0) at shell.c:2339
#11 0x08050785 in main (argc=2, argv=0xbfac1c54) at shell.c:2721

In icuOpen() it crashes at:

if( nInput<0 ){
  nInput = strlen(zInput);
}

here zInput is NULL. It's read from the updated row in fts3DeleteTerms
using sqlite3_column_text and is NULL since the column has NULL value as
far as I understand.

I've modified shell.c from the SQLite distribution to load
libSqliteIcu.so using sqlite3_load_extension() because it can't be
loaded with SELECT load_extension() but the crash also occured without
libSqliteIcu.so loaded.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to