sqlite/sqlite-3.26.0-CVE-2026-11822-CVE-2026-11824.patch
Daniel Handzus e14295af38 Fix CVE-2026-11822 and CVE-2026-11824
Resolves: RHEL-218243
Resolves: RHEL-218251
2026-08-13 07:43:18 +00:00

72 lines
2.2 KiB
Diff

diff -Naur sqlite-src-3260000/ext/fts5/fts5_index.c sqlite-src-3260000-patch/ext/fts5/fts5_index.c
--- sqlite-src-3260000/ext/fts5/fts5_index.c 2018-12-01 14:38:18.000000000 +0100
+++ sqlite-src-3260000-patch/ext/fts5/fts5_index.c 2026-08-12 10:47:37.308649697 +0200
@@ -712,7 +712,7 @@
static Fts5Data *fts5LeafRead(Fts5Index *p, i64 iRowid){
Fts5Data *pRet = fts5DataRead(p, iRowid);
if( pRet ){
- if( pRet->szLeaf>pRet->nn ){
+ if( pRet->szLeaf<4 || pRet->szLeaf>pRet->nn ){
p->rc = FTS5_CORRUPT;
fts5DataRelease(pRet);
pRet = 0;
diff -Naur sqlite-src-3260000/ext/fts5/test/fts5corruptA.test sqlite-src-3260000-patch/ext/fts5/test/fts5corruptA.test
--- sqlite-src-3260000/ext/fts5/test/fts5corruptA.test 1970-01-01 01:00:00.000000000 +0100
+++ sqlite-src-3260000-patch/ext/fts5/test/fts5corruptA.test 2026-08-12 15:39:06.975449775 +0200
@@ -0,0 +1,55 @@
+# 2026 May 11
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+#
+
+source [file join [file dirname [info script]] fts5_common.tcl]
+set testprefix fts5corruptA
+
+# If SQLITE_ENABLE_FTS5 is not defined, omit this file.
+ifcapable !fts5 {
+ finish_test
+ return
+}
+sqlite3_fts5_may_be_corrupt 1
+
+do_execsql_test 1.0 {
+ CREATE VIRTUAL TABLE t USING fts5(x, detail='full');
+ INSERT INTO t(t, rank) VALUES('pgsz', 32);
+}
+
+set big [string repeat "a " 200]
+do_execsql_test 1.1 {
+ INSERT INTO t(rowid, x) VALUES(1, $big)
+}
+
+do_test 1.2 {
+ db eval {
+ SELECT min(rowid) AS base_rowid, count(*) AS page_count FROM t_data
+ WHERE rowid>1000
+ } {}
+} {}
+
+do_test 1.4 {
+ set hex [hexio_read test.db 0 [file size test.db]]
+
+ set off [string first "023061018310" $hex]
+ set hex [string replace $hex $off [expr $off+11] 023061018370]
+ hexio_write test.db 0 $hex
+} {6144}
+
+sqlite3 db test.db
+
+do_catchsql_test 1.5 {
+ SELECT rowid FROM t WHERE t MATCH 'a'
+} {1 {database disk image is malformed}}
+
+sqlite3_fts5_may_be_corrupt 0
+finish_test