Your message dated Sat, 05 Dec 2020 11:02:00 +0000
with message-id 
<b70f86aac27195271a9b5212c7acc936da6ff100.ca...@adam-barratt.org.uk>
and subject line Closing bugs for updates in 10.7 point release
has caused the Debian Bug report #972115,
regarding buster-pu: package sqlite3/3.27.2-3+deb10u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
972115: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=972115
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian....@packages.debian.org
Usertags: pu
X-Debbugs-Cc: g...@debian.org

A number of security fixes in sqlite, which don't warrant a DSA.
This has been tested on a Buster system (along with validating
included test cases that issues are correctly fixed).

Cheers,
        Moritz
diff -Nru sqlite3-3.27.2/debian/changelog sqlite3-3.27.2/debian/changelog
--- sqlite3-3.27.2/debian/changelog     2019-06-01 17:38:52.000000000 +0200
+++ sqlite3-3.27.2/debian/changelog     2020-10-05 22:53:55.000000000 +0200
@@ -1,3 +1,18 @@
+sqlite3 (3.27.2-3+deb10u1) buster; urgency=medium
+
+  * CVE-2019-19923
+  * CVE-2019-19925
+  * CVE-2019-19959
+  * CVE-2019-20218
+  * CVE-2020-13434
+  * CVE-2020-13435
+  * CVE-2020-13630
+  * CVE-2020-13632
+  * CVE-2020-15358
+  * CVE-2019-16168
+
+ -- Moritz Mühlenhoff <j...@debian.org>  Mon, 05 Oct 2020 22:53:55 +0200
+
 sqlite3 (3.27.2-3) unstable; urgency=high
 
   * Backport security related patches:
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2019-16168.patch 
sqlite3-3.27.2/debian/patches/CVE-2019-16168.patch
--- sqlite3-3.27.2/debian/patches/CVE-2019-16168.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2019-16168.patch  2020-10-05 
22:53:55.000000000 +0200
@@ -0,0 +1,66 @@
+From 725dd72400872da94dcfb6af48128905b93d57fe Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Thu, 15 Aug 2019 14:35:45 +0000
+Subject: [PATCH] Ensure that the optional "sz=N" parameter that can be
+ manually added to the end of an sqlite_stat1 entry does not have an N value
+ that is too small. Ticket [e4598ecbdd18bd82]
+
+FossilOrigin-Name: 
98357d8c1263920b33a3648ef9214a63c99728bafa7a8d3dd6a1241b2303fd42
+---
+ src/analyze.c      |  4 +++-
+ src/where.c        |  1 +
+ test/analyzeC.test | 14 ++++++++++++++
+ 5 files changed, 28 insertions(+), 11 deletions(-)
+
+diff --git a/src/analyze.c b/src/analyze.c
+index 31fb6f5b5..1904b9be0 100644
+--- a/src/analyze.c
++++ b/src/analyze.c
+@@ -1450,7 +1450,9 @@ static void decodeIntArray(
+       if( sqlite3_strglob("unordered*", z)==0 ){
+         pIndex->bUnordered = 1;
+       }else if( sqlite3_strglob("sz=[0-9]*", z)==0 ){
+-        pIndex->szIdxRow = sqlite3LogEst(sqlite3Atoi(z+3));
++        int sz = sqlite3Atoi(z+3);
++        if( sz<2 ) sz = 2;
++        pIndex->szIdxRow = sqlite3LogEst(sz);
+       }else if( sqlite3_strglob("noskipscan*", z)==0 ){
+         pIndex->noSkipScan = 1;
+       }
+diff --git a/src/where.c b/src/where.c
+index 65c92863a..a37a810a2 100644
+--- a/src/where.c
++++ b/src/where.c
+@@ -2670,6 +2670,7 @@ static int whereLoopAddBtreeIndex(
+     ** it to pNew->rRun, which is currently set to the cost of the index
+     ** seek only. Then, if this is a non-covering index, add the cost of
+     ** visiting the rows in the main table.  */
++    assert( pSrc->pTab->szTabRow>0 );
+     rCostIdx = pNew->nOut + 1 + (15*pProbe->szIdxRow)/pSrc->pTab->szTabRow;
+     pNew->rRun = sqlite3LogEstAdd(rLogSize, rCostIdx);
+     if( (pNew->wsFlags & (WHERE_IDX_ONLY|WHERE_IPK))==0 ){
+diff --git a/test/analyzeC.test b/test/analyzeC.test
+index 02faa9c7e..2a0a89781 100644
+--- a/test/analyzeC.test
++++ b/test/analyzeC.test
+@@ -132,6 +132,20 @@ do_execsql_test 4.3 {
+   SELECT count(a) FROM t1;
+ } {/.*INDEX t1ca.*/}
+ 
++# 2019-08-15.
++# Ticket https://www.sqlite.org/src/tktview/e4598ecbdd18bd82945f602901
++# The sz=N parameter in the sqlite_stat1 table needs to have a value of
++# 2 or more to avoid a division by zero in the query planner.
++#
++do_execsql_test 4.4 {
++  DROP TABLE IF EXISTS t44;
++  CREATE TABLE t44(a PRIMARY KEY);
++  INSERT INTO sqlite_stat1 VALUES('t44',null,'sz=0');
++  ANALYZE sqlite_master;
++  SELECT 0 FROM t44 WHERE a IN(1,2,3);
++} {}
++
++
+ 
+ # The sz=NNN parameter works even if there is other extraneous text
+ # in the sqlite_stat1.stat column.
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2019-19923.patch 
sqlite3-3.27.2/debian/patches/CVE-2019-19923.patch
--- sqlite3-3.27.2/debian/patches/CVE-2019-19923.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2019-19923.patch  2020-10-02 
16:43:04.000000000 +0200
@@ -0,0 +1,62 @@
+From 396afe6f6aa90a31303c183e11b2b2d4b7956b35 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Wed, 18 Dec 2019 20:51:58 +0000
+Subject: [PATCH] Continue to back away from the LEFT JOIN optimization of
+ check-in [41c27bc0ff1d3135] by disallowing query flattening if the outer
+ query is DISTINCT.  Without this fix, if an index scan is run on the table
+ within the view on the right-hand side of the LEFT JOIN, stale result
+ registers might be accessed yielding incorrect results, and/or an
+ OP_IfNullRow opcode might be invoked on the un-opened table, resulting in a
+ NULL-pointer dereference.  This problem was found by the Yongheng and Rui
+ fuzzer.
+
+FossilOrigin-Name: 
862974312edf00e9d1068115d1a39b7235b7db68b6d86b81d38a12f025a4748e
+---
+ src/select.c   |  8 ++++++--
+ test/join.test | 13 +++++++++++++
+ 4 files changed, 27 insertions(+), 10 deletions(-)
+
+--- sqlite3-3.27.2.orig/src/select.c
++++ sqlite3-3.27.2/src/select.c
+@@ -3576,6 +3576,7 @@ static void substSelect(
+ **        (3b) the FROM clause of the subquery may not contain a virtual
+ **             table and
+ **        (3c) the outer query may not be an aggregate.
++**        (3d) the outer query may not be DISTINCT.
+ **
+ **   (4)  The subquery can not be DISTINCT.
+ **
+@@ -3772,8 +3773,11 @@ static int flattenSubquery(
+   */
+   if( (pSubitem->fg.jointype & JT_OUTER)!=0 ){
+     isLeftJoin = 1;
+-    if( pSubSrc->nSrc>1 || isAgg || IsVirtual(pSubSrc->a[0].pTab) ){
+-      /*  (3a)             (3c)     (3b) */
++    if( pSubSrc->nSrc>1                   /* (3a) */
++     || isAgg                             /* (3b) */
++     || IsVirtual(pSubSrc->a[0].pTab)     /* (3c) */
++     || (p->selFlags & SF_Distinct)!=0    /* (3d) */
++    ){
+       return 0;
+     }
+   }
+--- sqlite3-3.27.2.orig/test/join.test
++++ sqlite3-3.27.2/test/join.test
+@@ -864,4 +864,17 @@ do_execsql_test join-16.100 {
+    WHERE (b IS NOT NULL)=0;
+ } {1 {}}
+ 
++# 2019-12-18 problem with a LEFT JOIN where the RHS is a view.
++# Detected by Yongheng and Rui.
++# Follows from the optimization attempt of check-in 41c27bc0ff1d3135
++# on 2017-04-18
++#
++reset_db
++do_execsql_test join-22.10 {
++  CREATE TABLE t0(a, b);
++  CREATE INDEX t0a ON t0(a);
++  INSERT INTO t0 VALUES(10,10),(10,11),(10,12);
++  SELECT DISTINCT c FROM t0 LEFT JOIN (SELECT a+1 AS c FROM t0) ORDER BY c ;
++} {11}
++
+ finish_test
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2019-19925.patch 
sqlite3-3.27.2/debian/patches/CVE-2019-19925.patch
--- sqlite3-3.27.2/debian/patches/CVE-2019-19925.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2019-19925.patch  2020-10-02 
16:51:44.000000000 +0200
@@ -0,0 +1,44 @@
+From 54d501092d88c0cf89bec4279951f548fb0b8618 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Thu, 19 Dec 2019 15:15:40 +0000
+Subject: [PATCH] Fix the zipfile extension so that INSERT works even if the
+ pathname of the file being inserted is a NULL.  Bug discovered by the
+ Yongheng and Rui fuzzer.
+
+FossilOrigin-Name: 
a80f84b511231204658304226de3e075a55afc2e3f39ac063716f7a57f585c06
+---
+ ext/misc/zipfile.c |  1 +
+ test/zipfile.test  | 14 ++++++++++++++
+ 4 files changed, 23 insertions(+), 8 deletions(-)
+
+--- sqlite3-3.27.2.orig/ext/misc/zipfile.c
++++ sqlite3-3.27.2/ext/misc/zipfile.c
+@@ -1618,6 +1618,7 @@ static int zipfileUpdate(
+ 
+     if( rc==SQLITE_OK ){
+       zPath = (const char*)sqlite3_value_text(apVal[2]);
++      if( zPath==0 ) zPath = "";
+       nPath = (int)strlen(zPath);
+       mTime = zipfileGetTime(apVal[4]);
+     }
+--- sqlite3-3.27.2.orig/test/zipfile.test
++++ sqlite3-3.27.2/test/zipfile.test
+@@ -795,4 +795,18 @@ if {$tcl_platform(platform)!="windows"}
+   } {. ./x1.txt ./x2.txt}
+ }
+ 
++# 2019-12-18 Yongheng and Rui fuzzer
++#
++do_execsql_test 13.10 {
++  DROP TABLE IF EXISTS t0;
++  DROP TABLE IF EXISTS t1;
++  CREATE TABLE t0(a,b,c,d,e,f,g);
++  REPLACE INTO t0(c,b,f) VALUES(10,10,10);
++  CREATE VIRTUAL TABLE t1 USING zipfile('h.zip');
++  REPLACE INTO t1 SELECT * FROM t0;
++  SELECT quote(name),quote(mode),quote(mtime),quote(sz),quote(rawdata),
++         quote(data),quote(method) FROM t1;
++} {'' 10 10 2 X'3130' X'3130' 0}
++
++
+ finish_test
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2019-19959.patch 
sqlite3-3.27.2/debian/patches/CVE-2019-19959.patch
--- sqlite3-3.27.2/debian/patches/CVE-2019-19959.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2019-19959.patch  2020-10-02 
16:53:23.000000000 +0200
@@ -0,0 +1,67 @@
+From 1e490c4ca6b43a9cf8637d695907888349f69bec Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Mon, 23 Dec 2019 21:11:15 +0000
+Subject: [PATCH] Test case for the zipfile-extension bug fix of the previous
+ check-in.
+
+FossilOrigin-Name: 
bc8bfc7fcdf33f6855584e10e9260073430517ff3268cf0c7988dcc4cd785391
+---
+ test/zipfile.test | 12 ++++++++++++
+ 3 files changed, 19 insertions(+), 7 deletions(-)
+
+From d8f2d46cbc9925e034a68aaaf60aad788d9373c1 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Mon, 23 Dec 2019 21:04:33 +0000
+Subject: [PATCH] Fix the zipfile() function in the zipfile extension so that
+ it is able to deal with goofy filenames that contain embedded zeros.
+
+FossilOrigin-Name: 
cc0fb00a128fd0773db5ff7891f7aa577a3671d570166d2cbb30df922344adcf
+---
+ ext/misc/zipfile.c |  4 ++--
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+
+--- sqlite3-3.27.2.orig/ext/misc/zipfile.c
++++ sqlite3-3.27.2/ext/misc/zipfile.c
+@@ -1632,7 +1632,7 @@ static int zipfileUpdate(
+         zFree = sqlite3_mprintf("%s/", zPath);
+         if( zFree==0 ){ rc = SQLITE_NOMEM; }
+         zPath = (const char*)zFree;
+-        nPath++;
++        nPath = (int)strlen(zPath);
+       }
+     }
+ 
+@@ -2033,11 +2033,11 @@ void zipfileStep(sqlite3_context *pCtx,
+   }else{
+     if( zName[nName-1]!='/' ){
+       zName = zFree = sqlite3_mprintf("%s/", zName);
+-      nName++;
+       if( zName==0 ){
+         rc = SQLITE_NOMEM;
+         goto zipfile_step_out;
+       }
++      nName = (int)strlen(zName);
+     }else{
+       while( nName>1 && zName[nName-2]=='/' ) nName--;
+     }
+--- sqlite3-3.27.2.orig/test/zipfile.test
++++ sqlite3-3.27.2/test/zipfile.test
+@@ -808,5 +808,17 @@ do_execsql_test 13.10 {
+          quote(data),quote(method) FROM t1;
+ } {'' 10 10 2 X'3130' X'3130' 0}
+ 
++# 2019-12-23 Yongheng and Rui fuzzer
++# Run using valgrind to see the problem.
++#
++do_execsql_test 14.10 {
++  DROP TABLE t1;
++  CREATE TABLE t1(x char);
++  INSERT INTO t1(x) VALUES('1');
++  INSERT INTO t1(x) SELECT zipfile(x, 'xyz') FROM t1;
++  INSERT INTO t1(x) SELECT zipfile(x, 'uvw') FROM t1;
++  SELECT count(*) FROM t1;
++  PRAGMA integrity_check;
++} {3 ok}
+ 
+ finish_test
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2019-20218.patch 
sqlite3-3.27.2/debian/patches/CVE-2019-20218.patch
--- sqlite3-3.27.2/debian/patches/CVE-2019-20218.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2019-20218.patch  2020-10-05 
22:53:55.000000000 +0200
@@ -0,0 +1,97 @@
+From a6c1a71cde082e09750465d5675699062922e387 Mon Sep 17 00:00:00 2001
+From: dan <d...@noemail.net>
+Date: Fri, 27 Dec 2019 20:54:42 +0000
+Subject: [PATCH] Do not attempt to unwind the WITH stack in the Parse object
+ following an error. This fixes a separate case to [de6e6d68].
+
+From 46a31cdf6b7c1197e01627f91af601479cd99940 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Sat, 9 Nov 2019 14:38:58 +0000
+Subject: [PATCH] Make sure the WITH stack in the Parse object is disabled
+ following an error.
+
+diff -Naur sqlite3-3.27.2.orig/src/select.c sqlite3-3.27.2/src/select.c
+--- sqlite3-3.27.2.orig/src/select.c   2019-02-25 17:31:57.000000000 +0100
++++ sqlite3-3.27.2/src/select.c        2020-10-07 14:15:03.938758886 +0200
+@@ -4642,6 +4642,9 @@
+   With *pWith;                    /* WITH clause that pCte belongs to */
+ 
+   assert( pFrom->pTab==0 );
++  if( pParse->nErr ){
++    return SQLITE_ERROR;
++  }
+ 
+   pCte = searchWith(pParse->pWith, pFrom, &pWith);
+   if( pCte ){
+@@ -4911,7 +4914,7 @@
+ 
+   /* Process NATURAL keywords, and ON and USING clauses of joins.
+   */
+-  if( db->mallocFailed || sqliteProcessJoin(pParse, p) ){
++  if( pParse->nErr || db->mallocFailed || sqliteProcessJoin(pParse, p) ){
+     return WRC_Abort;
+   }
+ 
+diff -Naur sqlite3-3.27.2.orig/src/util.c sqlite3-3.27.2/src/util.c
+--- sqlite3-3.27.2.orig/src/util.c     2020-10-07 14:01:30.000000000 +0200
++++ sqlite3-3.27.2/src/util.c  2020-10-07 14:15:03.938758886 +0200
+@@ -222,6 +222,7 @@
+     sqlite3DbFree(db, pParse->zErrMsg);
+     pParse->zErrMsg = zMsg;
+     pParse->rc = SQLITE_ERROR;
++    pParse->pWith = 0;
+   }
+ }
+ 
+diff -Naur sqlite3-3.27.2.orig/test/altertab3.test 
sqlite3-3.27.2/test/altertab3.test
+--- sqlite3-3.27.2.orig/test/altertab3.test    2020-10-07 14:01:30.000000000 
+0200
++++ sqlite3-3.27.2/test/altertab3.test 2020-10-07 14:14:48.427575673 +0200
+@@ -112,6 +112,28 @@
+   SELECT * FROM sqlite_master WHERE type='table' AND name!='t1';
+ } {table t3 t3 3 {CREATE TABLE t3(e, f)}}
+ 
++#------------------------------------------------------------------------
++#
++reset_db
++do_execsql_test 23.1 {
++  CREATE TABLE v0 (a);
++  CREATE VIEW v2 (v3) AS 
++    WITH x1 AS (SELECT * FROM v2) 
++    SELECT v3 AS x, v3 AS y FROM v2; 
++}
++
++do_catchsql_test 23.2 {
++  SELECT * FROM v2
++} {1 {view v2 is circularly defined}}
++
++db close
++sqlite3 db test.db
++
++do_catchsql_test 23.3 {
++  ALTER TABLE v0 RENAME TO t3 ;
++} {1 {error in view v2: view v2 is circularly defined}}
++
++
+ finish_test
+ 
+ 
+diff -Naur sqlite3-3.27.2.orig/test/with3.test sqlite3-3.27.2/test/with3.test
+--- sqlite3-3.27.2.orig/test/with3.test        2019-02-25 17:31:57.000000000 
+0100
++++ sqlite3-3.27.2/test/with3.test     2020-10-07 14:15:03.938758886 +0200
+@@ -30,7 +30,15 @@
+     SELECT 5 FROM t0 UNION SELECT 8 FROM m
+   )
+   SELECT * FROM i;
+-} {1 {no such table: m}}
++} {1 {no such table: t0}}
++
++# 2019-11-09 dbfuzzcheck find
++do_catchsql_test 1.1 {
++  CREATE VIEW v1(x,y) AS
++    WITH t1(a,b) AS (VALUES(1,2))
++    SELECT * FROM nosuchtable JOIN t1;
++  SELECT * FROM v1;
++} {1 {no such table: main.nosuchtable}}
+ 
+ # Additional test cases that came out of the work to
+ # fix for Kostya's problem.
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2020-13434.patch 
sqlite3-3.27.2/debian/patches/CVE-2020-13434.patch
--- sqlite3-3.27.2/debian/patches/CVE-2020-13434.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2020-13434.patch  2020-10-02 
17:14:16.000000000 +0200
@@ -0,0 +1,54 @@
+From dd6c33d372f3b83f4fe57904c2bd5ebba5c38018 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Sat, 23 May 2020 19:58:07 +0000
+Subject: [PATCH] Limit the "precision" of floating-point to text conversions
+ in the printf() function to 100,000,000.  Fix for ticket [23439ea582241138].
+
+FossilOrigin-Name: 
d08d3405878d394e08e5d3af281246edfbd81ca74cc8d16458808591512fb93d
+---
+ src/printf.c     | 12 ++++++++++++
+ test/printf.test |  7 +++++++
+ 4 files changed, 27 insertions(+), 8 deletions(-)
+
+--- sqlite3-3.27.2.orig/src/printf.c
++++ sqlite3-3.27.2/src/printf.c
+@@ -187,6 +187,13 @@ static char *printfTempBuf(sqlite3_str *
+ #define etBUFSIZE SQLITE_PRINT_BUF_SIZE  /* Size of the output buffer */
+ 
+ /*
++** Hard limit on the precision of floating-point conversions.
++*/
++#ifndef SQLITE_PRINTF_PRECISION_LIMIT
++# define SQLITE_FP_PRECISION_LIMIT 100000000
++#endif
++
++/*
+ ** Render a string given by "fmt" into the StrAccum object.
+ */
+ void sqlite3_str_vappendf(
+@@ -507,6 +514,11 @@ void sqlite3_str_vappendf(
+         length = 0;
+ #else
+         if( precision<0 ) precision = 6;         /* Set default precision */
++#ifdef SQLITE_FP_PRECISION_LIMIT
++        if( precision>SQLITE_FP_PRECISION_LIMIT ){
++          precision = SQLITE_FP_PRECISION_LIMIT;
++        }
++#endif
+         if( realvalue<0.0 ){
+           realvalue = -realvalue;
+           prefix = '-';
+--- sqlite3-3.27.2.orig/test/printf.test
++++ sqlite3-3.27.2/test/printf.test
+@@ -3777,4 +3777,11 @@ foreach ::iRepeat {0 1} {
+   }
+ }
+ 
++# 2020-05-23
++# ticket 23439ea582241138
++#
++do_execsql_test printf-16.1 {
++  SELECT printf('%.*g',2147483647,0.01);
++} {0.01}
++
+ finish_test
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2020-13435.patch 
sqlite3-3.27.2/debian/patches/CVE-2020-13435.patch
--- sqlite3-3.27.2/debian/patches/CVE-2020-13435.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2020-13435.patch  2020-10-05 
22:53:55.000000000 +0200
@@ -0,0 +1,239 @@
+From e40cc16b472071f553700c7208394e6cf73d5688 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Sun, 24 May 2020 03:01:36 +0000
+Subject: [PATCH] Move some utility Walker callbacks into the walker.c source
+ file, as they seem to belong there better.
+
+FossilOrigin-Name: 
dac438236f7c5419d4e7e094e8b3f19f83cd3b1a18bc8acb14aee90d4514fa3c
+---
+ src/expr.c      | 13 ++-----------
+ src/select.c    | 23 -----------------------
+ src/sqliteInt.h |  3 +++
+ src/walker.c    | 37 +++++++++++++++++++++++++++++++++++++
+ 6 files changed, 52 insertions(+), 44 deletions(-)
+
+
+From c37577bb2dfb602a5cdbba8322a01b548c34c185 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Sun, 24 May 2020 03:38:37 +0000
+Subject: [PATCH] When rewriting a query for window functions, if the rewrite
+ changes the depth of TK_AGG_FUNCTION nodes, be sure to adjust the Expr.op2
+ field appropriately.  Fix for ticket [7a5279a25c57adf1]
+
+FossilOrigin-Name: 
ad7bb70af9bb68d192137188bb2528f1e9e43ad164c925174ca1dafc9e1f5339
+---
+
+ src/resolve.c     |  2 ++
+ src/window.c      | 23 +++++++++++++++++++++++
+ 5 files changed, 50 insertions(+), 9 deletions(-)
+
+
+From 0934d640456bb168a8888ae388643c5160afe501 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Mon, 25 May 2020 15:19:52 +0000
+Subject: [PATCH] Defensive code that tries to prevent a recurrence of problems
+ like the one described in ticket [7a5279a25c57adf1]
+
+FossilOrigin-Name: 
572105de1d44bca4f18c99d373458889163611384eebbc9659474874ee1701f4
+---
+ src/expr.c    | 10 ++++++++--
+ 3 files changed, 15 insertions(+), 9 deletions(-)
+
+
+--- sqlite3-3.27.2.orig/src/expr.c
++++ sqlite3-3.27.2/src/expr.c
+@@ -3456,7 +3456,10 @@ expr_code_doover:
+   switch( op ){
+     case TK_AGG_COLUMN: {
+       AggInfo *pAggInfo = pExpr->pAggInfo;
+-      struct AggInfo_col *pCol = &pAggInfo->aCol[pExpr->iAgg];
++      struct AggInfo_col *pCol;
++      assert( pAggInfo!=0 );
++      assert( pExpr->iAgg>=0 && pExpr->iAgg<pAggInfo->nColumn );
++      pCol = &pAggInfo->aCol[pExpr->iAgg];
+       if( !pAggInfo->directMode ){
+         assert( pCol->iMem>0 );
+         return pCol->iMem;
+@@ -3695,7 +3698,10 @@ expr_code_doover:
+     }
+     case TK_AGG_FUNCTION: {
+       AggInfo *pInfo = pExpr->pAggInfo;
+-      if( pInfo==0 ){
++      if( pInfo==0
++       || NEVER(pExpr->iAgg<0)
++       || NEVER(pExpr->iAgg>=pInfo->nFunc)
++      ){
+         assert( !ExprHasProperty(pExpr, EP_IntValue) );
+         sqlite3ErrorMsg(pParse, "misuse of aggregate: %s()", pExpr->u.zToken);
+       }else{
+@@ -5318,15 +5324,6 @@ static int analyzeAggregate(Walker *pWal
+   }
+   return WRC_Continue;
+ }
+-static int analyzeAggregatesInSelect(Walker *pWalker, Select *pSelect){
+-  UNUSED_PARAMETER(pSelect);
+-  pWalker->walkerDepth++;
+-  return WRC_Continue;
+-}
+-static void analyzeAggregatesInSelectEnd(Walker *pWalker, Select *pSelect){
+-  UNUSED_PARAMETER(pSelect);
+-  pWalker->walkerDepth--;
+-}
+ 
+ /*
+ ** Analyze the pExpr expression looking for aggregate functions and
+@@ -5340,8 +5337,8 @@ static void analyzeAggregatesInSelectEnd
+ void sqlite3ExprAnalyzeAggregates(NameContext *pNC, Expr *pExpr){
+   Walker w;
+   w.xExprCallback = analyzeAggregate;
+-  w.xSelectCallback = analyzeAggregatesInSelect;
+-  w.xSelectCallback2 = analyzeAggregatesInSelectEnd;
++  w.xSelectCallback = sqlite3WalkerDepthIncrease;
++  w.xSelectCallback2 = sqlite3WalkerDepthDecrease;
+   w.walkerDepth = 0;
+   w.u.pNC = pNC;
+   w.pParse = 0;
+--- sqlite3-3.27.2.orig/src/resolve.c
++++ sqlite3-3.27.2/src/resolve.c
+@@ -24,6 +24,8 @@
+ **
+ ** incrAggFunctionDepth(pExpr,n) is the main routine.  incrAggDepth(..)
+ ** is a helper function - a callback for the tree walker.
++**
++** See also the sqlite3WindowExtraAggFuncDepth() routine in window.c
+ */
+ static int incrAggDepth(Walker *pWalker, Expr *pExpr){
+   if( pExpr->op==TK_AGG_FUNCTION ) pExpr->op2 += pWalker->u.n;
+--- sqlite3-3.27.2.orig/src/select.c
++++ sqlite3-3.27.2/src/select.c
+@@ -5091,29 +5091,6 @@ static int selectExpander(Walker *pWalke
+   return WRC_Continue;
+ }
+ 
+-/*
+-** No-op routine for the parse-tree walker.
+-**
+-** When this routine is the Walker.xExprCallback then expression trees
+-** are walked without any actions being taken at each node.  Presumably,
+-** when this routine is used for Walker.xExprCallback then 
+-** Walker.xSelectCallback is set to do something useful for every 
+-** subquery in the parser tree.
+-*/
+-int sqlite3ExprWalkNoop(Walker *NotUsed, Expr *NotUsed2){
+-  UNUSED_PARAMETER2(NotUsed, NotUsed2);
+-  return WRC_Continue;
+-}
+-
+-/*
+-** No-op routine for the parse-tree walker for SELECT statements.
+-** subquery in the parser tree.
+-*/
+-int sqlite3SelectWalkNoop(Walker *NotUsed, Select *NotUsed2){
+-  UNUSED_PARAMETER2(NotUsed, NotUsed2);
+-  return WRC_Continue;
+-}
+-
+ #if SQLITE_DEBUG
+ /*
+ ** Always assert.  This xSelectCallback2 implementation proves that the
+--- sqlite3-3.27.2.orig/src/sqliteInt.h
++++ sqlite3-3.27.2/src/sqliteInt.h
+@@ -3497,6 +3497,9 @@ int sqlite3WalkSelectFrom(Walker*, Selec
+ int sqlite3ExprWalkNoop(Walker*, Expr*);
+ int sqlite3SelectWalkNoop(Walker*, Select*);
+ int sqlite3SelectWalkFail(Walker*, Select*);
++int sqlite3WalkerDepthIncrease(Walker*,Select*);
++void sqlite3WalkerDepthDecrease(Walker*,Select*);
++
+ #ifdef SQLITE_DEBUG
+ void sqlite3SelectWalkAssert2(Walker*, Select*);
+ #endif
+--- sqlite3-3.27.2.orig/src/walker.c
++++ sqlite3-3.27.2/src/walker.c
+@@ -188,3 +188,40 @@ int sqlite3WalkSelect(Walker *pWalker, S
+   }while( p!=0 );
+   return WRC_Continue;
+ }
++
++/* Increase the walkerDepth when entering a subquery, and
++** descrease when leaving the subquery.
++*/
++int sqlite3WalkerDepthIncrease(Walker *pWalker, Select *pSelect){
++  UNUSED_PARAMETER(pSelect);
++  pWalker->walkerDepth++;
++  return WRC_Continue;
++}
++void sqlite3WalkerDepthDecrease(Walker *pWalker, Select *pSelect){
++  UNUSED_PARAMETER(pSelect);
++  pWalker->walkerDepth--;
++}
++
++
++/*
++** No-op routine for the parse-tree walker.
++**
++** When this routine is the Walker.xExprCallback then expression trees
++** are walked without any actions being taken at each node.  Presumably,
++** when this routine is used for Walker.xExprCallback then 
++** Walker.xSelectCallback is set to do something useful for every 
++** subquery in the parser tree.
++*/
++int sqlite3ExprWalkNoop(Walker *NotUsed, Expr *NotUsed2){
++  UNUSED_PARAMETER2(NotUsed, NotUsed2);
++  return WRC_Continue;
++}
++
++/*
++** No-op routine for the parse-tree walker for SELECT statements.
++** subquery in the parser tree.
++*/
++int sqlite3SelectWalkNoop(Walker *NotUsed, Select *NotUsed2){
++  UNUSED_PARAMETER2(NotUsed, NotUsed2);
++  return WRC_Continue;
++}
+--- sqlite3-3.27.2.orig/src/window.c
++++ sqlite3-3.27.2/src/window.c
+@@ -738,6 +738,23 @@ static ExprList *exprListAppendList(
+ }
+ 
+ /*
++** When rewriting a query, if the new subquery in the FROM clause
++** contains TK_AGG_FUNCTION nodes that refer to an outer query,
++** then we have to increase the Expr->op2 values of those nodes
++** due to the extra subquery layer that was added.
++**
++** See also the incrAggDepth() routine in resolve.c
++*/
++static int sqlite3WindowExtraAggFuncDepth(Walker *pWalker, Expr *pExpr){
++  if( pExpr->op==TK_AGG_FUNCTION
++   && pExpr->op2>=pWalker->walkerDepth
++  ){
++    pExpr->op2++;
++  }
++  return WRC_Continue;
++}
++
++/*
+ ** If the SELECT statement passed as the second argument does not invoke
+ ** any SQL window functions, this function is a no-op. Otherwise, it 
+ ** rewrites the SELECT statement so that window function xStep functions
+@@ -825,6 +842,7 @@ int sqlite3WindowRewrite(Parse *pParse,
+     );
+     p->pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
+     if( p->pSrc ){
++      Walker w;
+       p->pSrc->a[0].pSelect = pSub;
+       sqlite3SrcListAssignCursors(pParse, p->pSrc);
+       if( sqlite3ExpandSubquery(pParse, &p->pSrc->a[0]) ){
+@@ -833,6 +851,11 @@ int sqlite3WindowRewrite(Parse *pParse,
+         pSub->selFlags |= SF_Expanded;
+         p->selFlags &= ~SF_Aggregate;
+         sqlite3SelectPrep(pParse, pSub, 0);
++        memset(&w, 0, sizeof(w));
++        w.xExprCallback = sqlite3WindowExtraAggFuncDepth;
++        w.xSelectCallback = sqlite3WalkerDepthIncrease;
++        w.xSelectCallback2 = sqlite3WalkerDepthDecrease;
++        sqlite3WalkSelect(&w, pSub);
+       }
+ 
+       sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pMWin->iEphCsr, pSublist->nExpr);
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2020-13630.patch 
sqlite3-3.27.2/debian/patches/CVE-2020-13630.patch
--- sqlite3-3.27.2/debian/patches/CVE-2020-13630.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2020-13630.patch  2020-10-02 
17:28:13.000000000 +0200
@@ -0,0 +1,20 @@
+From becd68ba0dac41904aa817d96a67fb4685734b41 Mon Sep 17 00:00:00 2001
+From: dan <d...@noemail.net>
+Date: Sat, 16 May 2020 17:26:58 +0000
+Subject: [PATCH] Fix a use-after-free bug in the fts3 snippet() function.
+
+FossilOrigin-Name: 
0d69f76f0865f9626078bee087a22fb826407279e78cf9d5382e1c985c9f64a9
+---
+ ext/fts3/fts3.c        |  1 +
+ 4 files changed, 23 insertions(+), 9 deletions(-)
+
+--- sqlite3-3.27.2.orig/ext/fts3/fts3.c
++++ sqlite3-3.27.2/ext/fts3/fts3.c
+@@ -5238,6 +5238,7 @@ static void fts3EvalNextRow(
+                 fts3EvalNextRow(pCsr, pLeft, pRc);
+               }
+             }
++            pRight->bEof = pLeft->bEof = 1;
+           }
+         }
+         break;
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2020-13632.patch 
sqlite3-3.27.2/debian/patches/CVE-2020-13632.patch
--- sqlite3-3.27.2/debian/patches/CVE-2020-13632.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2020-13632.patch  2020-10-02 
17:31:01.000000000 +0200
@@ -0,0 +1,63 @@
+From 219b8e7e7587df8669d96ce867cdd61ca1c05730 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Thu, 14 May 2020 23:59:24 +0000
+Subject: [PATCH] Fix a null pointer deference that can occur on a strange
+ matchinfo() query.
+
+FossilOrigin-Name: 
a4dd148928ea65bd4e1654dfacc3d8057d1f85b8c9939416991d50722e5a720e
+---
+ ext/fts3/fts3_snippet.c  |  2 +-
+ test/fts3matchinfo2.test | 35 +++++++++++++++++++++++++++++++++++
+ 4 files changed, 44 insertions(+), 8 deletions(-)
+ create mode 100644 test/fts3matchinfo2.test
+
+
+--- sqlite3-3.27.2.orig/ext/fts3/fts3_snippet.c
++++ sqlite3-3.27.2/ext/fts3/fts3_snippet.c
+@@ -875,7 +875,7 @@ static int fts3ExprLHits(
+     iStart = pExpr->iPhrase * ((p->nCol + 31) / 32);
+   }
+ 
+-  while( 1 ){
++  if( pIter ) while( 1 ){
+     int nHit = fts3ColumnlistCount(&pIter);
+     if( (pPhrase->iColumn>=pTab->nColumn || pPhrase->iColumn==iCol) ){
+       if( p->flag==FTS3_MATCHINFO_LHITS ){
+--- /dev/null
++++ sqlite3-3.27.2/test/fts3matchinfo2.test
+@@ -0,0 +1,35 @@
++# 2020-05-14
++#
++# 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.
++#
++#***********************************************************************
++# This file implements regression tests for the FTS3 module. The focus
++# of this file is tables created with the "matchinfo=fts3" option.
++#
++
++set testdir [file dirname $argv0]
++source $testdir/tester.tcl
++
++# If SQLITE_ENABLE_FTS3 is not defined, omit this file.
++ifcapable !fts3 { finish_test ; return }
++
++set sqlite_fts3_enable_parentheses 1
++
++# Crash case found by cyg0810 at gmail.com 2020-05-14.  Reported to
++# chromium (which is not vulnerable) who kindly referred it to us.
++#
++do_execsql_test 1.0 {
++  CREATE TABLE t_content(col0 INTEGER);
++  CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 
VARCHAR(8),col2 BINARY,col3 BINARY);
++  INSERT INTO t0 VALUES (1, '1234','aaaa','bbbb');
++  SELECT hex(matchinfo(t0,'yxy'))  FROM t0 WHERE t0 MATCH  
x'2b0a312b0a312a312a2a0b5d0a0b0b0a312a0a0b0b0a312a0b310a392a0b0a27312a2a0b5d0a312a0b310a31315d0b310a312a316d2a0b313b15bceaa50a312a0b0a27312a2a0b5d0a312a0b310a312b0b2a310a312a0b2a0b2a0b2e5d0a0bff313336e34a2a312a0b0a3c310b0a0b4b4b0b4b2a4bec40322b2a0b310a0a312a0a0a0a0a0a0a0a0a0b310a312a2a2a0b5d0a0b0b0a312a0b310a312a0b0a4e4541530b310a5df5ced70a0a0a0a0a4f520a0a0a0a0a0a0a312a0b0a4e4541520b310a5d616161610a0a0a0a4f520a0a0a0a0a0a312b0a312a312a0a0a0a0a0a0a004a0b0a310b220a0b0a310a4a22310a0b0a7e6fe0e0e030e0e0e0e0e01176e02000e0e0e0e0e01131320226310a0b0a310a4a22310a0b0a310a766f8b8b4ee0e0300ae0090909090909090909090909090909090909090909090909090909090909090947aaaa540b09090909090909090909090909090909090909090909090909090909090909fae0e0f2f22164e0e0f273e07fefefef7d6dfafafafa6d6d6d6d';
++} {/000000.*0000000/}
++
++
++set sqlite_fts3_enable_parentheses 0
++finish_test
diff -Nru sqlite3-3.27.2/debian/patches/CVE-2020-15358.patch 
sqlite3-3.27.2/debian/patches/CVE-2020-15358.patch
--- sqlite3-3.27.2/debian/patches/CVE-2020-15358.patch  1970-01-01 
01:00:00.000000000 +0100
+++ sqlite3-3.27.2/debian/patches/CVE-2020-15358.patch  2020-10-02 
17:48:46.000000000 +0200
@@ -0,0 +1,82 @@
+From b7cbf5c1b2a9e099eec176e1ebeb659427a20626 Mon Sep 17 00:00:00 2001
+From: drh <d...@noemail.net>
+Date: Mon, 15 Jun 2020 13:51:34 +0000
+Subject: [PATCH] Fix a defect in the query-flattener optimization identified
+ by ticket [8f157e8010b22af0].
+
+FossilOrigin-Name: 
10fa79d00f8091e5748c245f4cae5b5f499a5f8db20da741c130e05a21ede443
+---
+ src/select.c      |  7 +++----
+ src/sqliteInt.h   |  1 +
+ test/selectA.test | 21 +++++++++++++++++++++
+ 5 files changed, 34 insertions(+), 12 deletions(-)
+
+--- sqlite3-3.27.2.orig/src/select.c
++++ sqlite3-3.27.2/src/select.c
+@@ -2689,9 +2689,7 @@ static int multiSelect(
+                           selectOpName(p->op)));
+         rc = sqlite3Select(pParse, p, &uniondest);
+         testcase( rc!=SQLITE_OK );
+-        /* Query flattening in sqlite3Select() might refill p->pOrderBy.
+-        ** Be sure to delete p->pOrderBy, therefore, to avoid a memory leak. 
*/
+-        sqlite3ExprListDelete(db, p->pOrderBy);
++        assert( p->pOrderBy==0 );
+         pDelete = p->pPrior;
+         p->pPrior = pPrior;
+         p->pOrderBy = 0;
+@@ -4011,7 +4009,7 @@ static int flattenSubquery(
+     ** We look at every expression in the outer query and every place we see
+     ** "a" we substitute "x*3" and every place we see "b" we substitute 
"y+10".
+     */
+-    if( pSub->pOrderBy ){
++    if( pSub->pOrderBy && (pParent->selFlags & SF_NoopOrderBy)==0 ){
+       /* At this point, any non-zero iOrderByCol values indicate that the
+       ** ORDER BY column expression is identical to the iOrderByCol'th
+       ** expression returned by SELECT statement pSub. Since these values
+@@ -5618,6 +5616,7 @@ int sqlite3Select(
+     sqlite3ExprListDelete(db, p->pOrderBy);
+     p->pOrderBy = 0;
+     p->selFlags &= ~SF_Distinct;
++    p->selFlags |= SF_NoopOrderBy;
+   }
+   sqlite3SelectPrep(pParse, p, 0);
+   if( pParse->nErr || db->mallocFailed ){
+--- sqlite3-3.27.2.orig/src/sqliteInt.h
++++ sqlite3-3.27.2/src/sqliteInt.h
+@@ -2884,6 +2884,7 @@ struct Select {
+ #define SF_Converted      0x10000  /* By convertCompoundSelectToSubquery() */
+ #define SF_IncludeHidden  0x20000  /* Include hidden columns in output */
+ #define SF_ComplexResult  0x40000  /* Result contains subquery or function */
++#define SF_NoopOrderBy    0x0400000 /* ORDER BY is ignored for this query */
+ 
+ /*
+ ** The results of a SELECT can be distributed in several ways, as defined
+--- sqlite3-3.27.2.orig/test/selectA.test
++++ sqlite3-3.27.2/test/selectA.test
+@@ -1446,5 +1446,26 @@ do_execsql_test 6.1 {
+   SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t2) WHERE a=a;
+ } {12345}
+ 
++# 2020-06-15 ticket 8f157e8010b22af0
++#
++reset_db
++do_execsql_test 7.1 {
++  CREATE TABLE t1(c1);     INSERT INTO t1 
VALUES(12),(123),(1234),(NULL),('abc');
++  CREATE TABLE t2(c2);     INSERT INTO t2 VALUES(44),(55),(123);
++  CREATE TABLE t3(c3,c4);  INSERT INTO t3 VALUES(66,1),(123,2),(77,3);
++  CREATE VIEW t4 AS SELECT c3 FROM t3;
++  CREATE VIEW t5 AS SELECT c3 FROM t3 ORDER BY c4;
++}
++do_execsql_test 7.2 {
++  SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t4) AND 
c1=123;
++} {123 123}
++do_execsql_test 7.3 {
++  SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t5) AND 
c1=123;
++} {123 123}
++do_execsql_test 7.4 {
++  CREATE TABLE a(b);
++  CREATE VIEW c(d) AS SELECT b FROM a ORDER BY b;
++  SELECT sum(d) OVER( PARTITION BY(SELECT 0 FROM c JOIN a WHERE b =(SELECT b 
INTERSECT SELECT d FROM c) AND b = 123)) FROM c;
++} {}
+ 
+ finish_test
diff -Nru sqlite3-3.27.2/debian/patches/series 
sqlite3-3.27.2/debian/patches/series
--- sqlite3-3.27.2/debian/patches/series        2019-06-01 17:38:52.000000000 
+0200
+++ sqlite3-3.27.2/debian/patches/series        2020-10-05 22:53:55.000000000 
+0200
@@ -14,3 +14,13 @@
 46-probably_CVE-2019-5018.patch
 47-probably_CVE-2019-5827_part1.patch
 48-probably_CVE-2019-5827_part2.patch
+CVE-2019-19923.patch
+CVE-2019-19925.patch
+CVE-2019-19959.patch
+CVE-2019-20218.patch
+CVE-2020-13434.patch
+CVE-2020-13435.patch
+CVE-2020-13630.patch
+CVE-2020-13632.patch
+CVE-2020-15358.patch
+CVE-2019-16168.patch

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 10.7

Hi,

Each of the updates referenced by these bugs was included in this
morning's buster 10.7 point release.

Regards,

Adam

--- End Message ---

Reply via email to