From a6bd1871d1c0c63df9a0482b07477380eb55200d Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 9 Oct 2019 15:26:45 +0000 Subject: [PATCH] Disallow fts5 page sizes greater than 65536 bytes - as there are 16-bit offsets used in the page header. FossilOrigin-Name: 75775c5ab44e497cb19be10397229637f1374f05c3244e8f92d6c54fcea94f5f --- ext/fts5/fts5_config.c | 2 +- ext/fts5/test/fts5misc.test | 24 ++++++++++++++++++++++++ manifest | 17 ++++++++--------- manifest.uuid | 2 +- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/ext/fts5/fts5_config.c b/ext/fts5/fts5_config.c index 119eb5d262..20da37913b 100644 --- a/ext/fts5/fts5_config.c +++ b/ext/fts5/fts5_config.c @@ -23,7 +23,7 @@ #define FTS5_DEFAULT_HASHSIZE (1024*1024) /* Maximum allowed page size */ -#define FTS5_MAX_PAGE_SIZE (128*1024) +#define FTS5_MAX_PAGE_SIZE (64*1024) static int fts5_iswhitespace(char x){ return (x==' '); diff --git a/ext/fts5/test/fts5misc.test b/ext/fts5/test/fts5misc.test index 4ce46d38df..f8d5be584e 100644 --- a/ext/fts5/test/fts5misc.test +++ b/ext/fts5/test/fts5misc.test @@ -150,6 +150,30 @@ do_execsql_test 4.4 { INSERT INTO vt0(vt0) VALUES('integrity-check'); } +#------------------------------------------------------------------------- +# Ticket [81a7f7b9]. +# +reset_db +do_execsql_test 5.0 { + CREATE VIRTUAL TABLE vt0 USING fts5(c0, c1); + INSERT INTO vt0(vt0, rank) VALUES('pgsz', '65536'); + WITH s(i) AS ( + SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<1236 + ) + INSERT INTO vt0(c0) SELECT '0' FROM s; +} {} + +do_execsql_test 5.1 { + UPDATE vt0 SET c1 = 'T,D&p^y/7#3*v