diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-09-16 09:32:48 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-09-16 09:32:48 +0100 |
commit | 9ee6d97c2883d42f204a533a8bc1f4562df778fb (patch) | |
tree | b690ddc0ca30f1472887edbb0b8313629bfcbbb2 /dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch | |
parent | b17a3ef12038de50228bade1f05502c74e135321 (diff) |
gentoo resync : 16.09.2020
Diffstat (limited to 'dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch')
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch deleted file mode 100644 index ad2a3bfe16d0..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch +++ /dev/null @@ -1,146 +0,0 @@ -https://sqlite.org/src/info/cc888878ea8d5bc7 -https://sqlite.org/src/info/be545f85a6ef09cc -https://sqlite.org/src/info/6e0ffa2053124168 -https://sqlite.org/src/info/4d0cfb1236884349 - ---- /ext/fts3/fts3.c -+++ /ext/fts3/fts3.c -@@ -5208,10 +5208,12 @@ - ); - if( res ){ - nNew = (int)(pOut - pPhrase->doclist.pList) - 1; -- assert( pPhrase->doclist.pList[nNew]=='\0' ); -- assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -- memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -- pPhrase->doclist.nList = nNew; -+ if( nNew>=0 ){ -+ assert( pPhrase->doclist.pList[nNew]=='\0' ); -+ assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -+ memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -+ pPhrase->doclist.nList = nNew; -+ } - *paPoslist = pPhrase->doclist.pList; - *pnToken = pPhrase->nToken; - } ---- /ext/fts3/fts3_write.c -+++ /ext/fts3/fts3_write.c -@@ -341,7 +341,9 @@ - ** created by merging the oldest :2 segments from absolute level :1. See - ** function sqlite3Fts3Incrmerge() for details. */ - /* 29 */ "SELECT 2 * total(1 + leaves_end_block - start_block) " -- " FROM %Q.'%q_segdir' WHERE level = ? AND idx < ?", -+ " FROM (SELECT * FROM %Q.'%q_segdir' " -+ " WHERE level = ? ORDER BY idx ASC LIMIT ?" -+ " )", - - /* SQL_DELETE_SEGDIR_ENTRY - ** Delete the %_segdir entry on absolute level :1 with index :2. */ -@@ -2853,6 +2855,19 @@ - return SQLITE_OK; - } - -+static int fts3GrowSegReaderBuffer(Fts3MultiSegReader *pCsr, int nReq){ -+ if( nReq>pCsr->nBuffer ){ -+ char *aNew; -+ pCsr->nBuffer = nReq*2; -+ aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -+ if( !aNew ){ -+ return SQLITE_NOMEM; -+ } -+ pCsr->aBuffer = aNew; -+ } -+ return SQLITE_OK; -+} -+ - - int sqlite3Fts3SegReaderStep( - Fts3Table *p, /* Virtual table handle */ -@@ -2987,15 +3002,9 @@ - } - - nByte = sqlite3Fts3VarintLen(iDelta) + (isRequirePos?nList+1:0); -- if( nDoclist+nByte>pCsr->nBuffer ){ -- char *aNew; -- pCsr->nBuffer = (nDoclist+nByte)*2; -- aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -- if( !aNew ){ -- return SQLITE_NOMEM; -- } -- pCsr->aBuffer = aNew; -- } -+ -+ rc = fts3GrowSegReaderBuffer(pCsr, nByte+nDoclist); -+ if( rc ) return rc; - - if( isFirst ){ - char *a = &pCsr->aBuffer[nDoclist]; -@@ -3020,6 +3029,9 @@ - fts3SegReaderSort(apSegment, nMerge, j, xCmp); - } - if( nDoclist>0 ){ -+ rc = fts3GrowSegReaderBuffer(pCsr, nDoclist+FTS3_NODE_PADDING); -+ if( rc ) return rc; -+ memset(&pCsr->aBuffer[nDoclist], 0, FTS3_NODE_PADDING); - pCsr->aDoclist = pCsr->aBuffer; - pCsr->nDoclist = nDoclist; - rc = SQLITE_ROW; ---- /src/expr.c -+++ /src/expr.c -@@ -4272,7 +4272,9 @@ - int nCol; - testcase( op==TK_EXISTS ); - testcase( op==TK_SELECT ); -- if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ -+ if( pParse->db->mallocFailed ){ -+ return 0; -+ }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ - sqlite3SubselectError(pParse, nCol, 1); - }else{ - return sqlite3CodeSubselect(pParse, pExpr); ---- /test/fts3corrupt4.test -+++ /test/fts3corrupt4.test -@@ -6123,4 +6123,44 @@ - SELECT offsets(t1) FROM t1 WHERE t1 MATCH 'rtree ner "json1^enable"'; - } - -+#------------------------------------------------------------------------- -+do_execsql_test 42.1 { -+ CREATE VIRTUAL TABLE f USING fts3(a, b); -+} -+do_execsql_test 42.2 { -+ INSERT INTO f_segdir VALUES(0,2,1111,0,0,X'00'); -+ INSERT INTO f_segdir VALUES(0,3,0 ,0,0,X'00013003010200'); -+} -+do_execsql_test 42.3 { -+ INSERT INTO f(f) VALUES ('merge=107,2'); -+} -+ -+#------------------------------------------------------------------------- -+reset_db -+set saved $sqlite_fts3_enable_parentheses -+set sqlite_fts3_enable_parentheses 1 -+do_execsql_test 43.1 { -+ CREATE VIRTUAL TABLE def USING fts3(xyz); -+ INSERT INTO def_segdir VALUES(0,0,0,0,0, X'0001310301c9000103323334050d81'); -+} {} -+ -+do_execsql_test 43.2 { -+ SELECT rowid FROM def WHERE def MATCH '1 NEAR 1' -+} {1} -+ -+set sqlite_fts3_enable_parentheses $saved -+ -+#------------------------------------------------------------------------- -+reset_db -+do_execsql_test 44.1 { -+ CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY); -+ INSERT INTO t0_content VALUES(0,NULL,NULL,NULL,NULL); -+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'00013103010200010332333405010201ba00000461616161050101020200000462626262050101030200'); -+} -+ -+do_execsql_test 44.2 { -+ SELECT matchinfo(t0, t0) IS NULL FROM t0 WHERE t0 MATCH '1*' -+} {0} -+ -+ - finish_test |