Fix an infinite loop caused by a corrupt database in fts3. Also an undefined
left-shift in fts5. FossilOrigin-Name: 55c5d72af9510e2f27c33544d804a58d4282b0efb384ead38484129ce91b574f
This commit is contained in:
@@ -52,7 +52,7 @@ void sqlite3Fts5Put32(u8 *aBuf, int iVal){
|
||||
}
|
||||
|
||||
int sqlite3Fts5Get32(const u8 *aBuf){
|
||||
return (aBuf[0] << 24) + (aBuf[1] << 16) + (aBuf[2] << 8) + aBuf[3];
|
||||
return (int)((((u32)aBuf[0])<<24) + (aBuf[1]<<16) + (aBuf[2]<<8) + aBuf[3]);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -4639,6 +4639,18 @@ do_catchsql_test 37.1 {
|
||||
SELECT * FROM t3;
|
||||
} {1 {database disk image is malformed}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
do_execsql_test 37.0 {
|
||||
CREATE VIRTUAL TABLE t1 USING fts5(b, c);
|
||||
INSERT INTO t1 VALUES('a', 'b');
|
||||
SELECT quote(block) FROM t1_data WHERE rowid=10;
|
||||
} {X'000000000101010001010101'}
|
||||
|
||||
do_execsql_test 37.1 {
|
||||
UPDATE t1_data SET block = X'FFFFFFFF0101010001010101' WHERE rowid = 10;
|
||||
SELECT rowid FROM t1('a');
|
||||
} {1}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user