Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
From 57d1e61dda969659f59a0b7841c7d0287d724bc6 Mon Sep 17 00:00:00 2001
|
||||
From: drh <>
|
||||
Date: Mon, 17 Feb 2025 14:16:49 +0000
|
||||
Subject: [PATCH] Harden the SQLITE_DBCONFIG_LOOKASIDE interface against
|
||||
misuse, such as described in [forum:/forumpost/48f365daec|forum post
|
||||
48f365daec]. Enhancements to the SQLITE_DBCONFIG_LOOKASIDE documentation.
|
||||
Test cases in TH3.
|
||||
|
||||
FossilOrigin-Name: 1ec4c308c76c69fba031184254fc3340f07607cfbf8342b13713ab445563d377
|
||||
|
||||
CVE: CVE-2025-29088
|
||||
Upstream-Status: Backport [https://github.com/sqlite/sqlite/commit/56d2fd008b108109f489339f5fd55212bb50afd4]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
sqlite3.c | 42 +++++++++++++++++++++++---------------
|
||||
sqlite3.h | 60 +++++++++++++++++++++++++++++++++++++------------------
|
||||
2 files changed, 67 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/sqlite3.c b/sqlite3.c
|
||||
index 24d0d954d9..2574a43f3e 100644
|
||||
--- a/sqlite3.c
|
||||
+++ b/sqlite3.c
|
||||
@@ -179112,17 +179112,22 @@ SQLITE_API int sqlite3_config(int op, ...){
|
||||
** If lookaside is already active, return SQLITE_BUSY.
|
||||
**
|
||||
** The sz parameter is the number of bytes in each lookaside slot.
|
||||
-** The cnt parameter is the number of slots. If pStart is NULL the
|
||||
-** space for the lookaside memory is obtained from sqlite3_malloc().
|
||||
-** If pStart is not NULL then it is sz*cnt bytes of memory to use for
|
||||
-** the lookaside memory.
|
||||
+** The cnt parameter is the number of slots. If pBuf is NULL the
|
||||
+** space for the lookaside memory is obtained from sqlite3_malloc()
|
||||
+** or similar. If pBuf is not NULL then it is sz*cnt bytes of memory
|
||||
+** to use for the lookaside memory.
|
||||
*/
|
||||
-static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
|
||||
+static int setupLookaside(
|
||||
+ sqlite3 *db, /* Database connection being configured */
|
||||
+ void *pBuf, /* Memory to use for lookaside. May be NULL */
|
||||
+ int sz, /* Desired size of each lookaside memory slot */
|
||||
+ int cnt /* Number of slots to allocate */
|
||||
+){
|
||||
#ifndef SQLITE_OMIT_LOOKASIDE
|
||||
- void *pStart;
|
||||
- sqlite3_int64 szAlloc = sz*(sqlite3_int64)cnt;
|
||||
- int nBig; /* Number of full-size slots */
|
||||
- int nSm; /* Number smaller LOOKASIDE_SMALL-byte slots */
|
||||
+ void *pStart; /* Start of the lookaside buffer */
|
||||
+ sqlite3_int64 szAlloc; /* Total space set aside for lookaside memory */
|
||||
+ int nBig; /* Number of full-size slots */
|
||||
+ int nSm; /* Number smaller LOOKASIDE_SMALL-byte slots */
|
||||
|
||||
if( sqlite3LookasideUsed(db,0)>0 ){
|
||||
return SQLITE_BUSY;
|
||||
@@ -179135,17 +179140,22 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
|
||||
sqlite3_free(db->lookaside.pStart);
|
||||
}
|
||||
/* The size of a lookaside slot after ROUNDDOWN8 needs to be larger
|
||||
- ** than a pointer to be useful.
|
||||
+ ** than a pointer and small enough to fit in a u16.
|
||||
*/
|
||||
- sz = ROUNDDOWN8(sz); /* IMP: R-33038-09382 */
|
||||
+ sz = ROUNDDOWN8(sz);
|
||||
if( sz<=(int)sizeof(LookasideSlot*) ) sz = 0;
|
||||
- if( cnt<0 ) cnt = 0;
|
||||
- if( sz==0 || cnt==0 ){
|
||||
+ if( sz>65528 ) sz = 65528;
|
||||
+ /* Count must be at least 1 to be useful, but not so large as to use
|
||||
+ ** more than 0x7fff0000 total bytes for lookaside. */
|
||||
+ if( cnt<1 ) cnt = 0;
|
||||
+ if( sz>0 && cnt>(0x7fff0000/sz) ) cnt = 0x7fff0000/sz;
|
||||
+ szAlloc = (i64)sz*(i64)cnt;
|
||||
+ if( szAlloc==0 ){
|
||||
sz = 0;
|
||||
pStart = 0;
|
||||
}else if( pBuf==0 ){
|
||||
sqlite3BeginBenignMalloc();
|
||||
- pStart = sqlite3Malloc( szAlloc ); /* IMP: R-61949-35727 */
|
||||
+ pStart = sqlite3Malloc( szAlloc );
|
||||
sqlite3EndBenignMalloc();
|
||||
if( pStart ) szAlloc = sqlite3MallocSize(pStart);
|
||||
}else{
|
||||
@@ -179154,10 +179164,10 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
|
||||
#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
|
||||
if( sz>=LOOKASIDE_SMALL*3 ){
|
||||
nBig = szAlloc/(3*LOOKASIDE_SMALL+sz);
|
||||
- nSm = (szAlloc - sz*nBig)/LOOKASIDE_SMALL;
|
||||
+ nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
|
||||
}else if( sz>=LOOKASIDE_SMALL*2 ){
|
||||
nBig = szAlloc/(LOOKASIDE_SMALL+sz);
|
||||
- nSm = (szAlloc - sz*nBig)/LOOKASIDE_SMALL;
|
||||
+ nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
|
||||
}else
|
||||
#endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
|
||||
if( sz>0 ){
|
||||
diff --git a/sqlite3.h b/sqlite3.h
|
||||
index 2618b37a7b..056511f577 100644
|
||||
--- a/sqlite3.h
|
||||
+++ b/sqlite3.h
|
||||
@@ -1974,13 +1974,16 @@ struct sqlite3_mem_methods {
|
||||
**
|
||||
** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
|
||||
** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
|
||||
-** the default size of lookaside memory on each [database connection].
|
||||
+** the default size of [lookaside memory] on each [database connection].
|
||||
** The first argument is the
|
||||
-** size of each lookaside buffer slot and the second is the number of
|
||||
-** slots allocated to each database connection.)^ ^(SQLITE_CONFIG_LOOKASIDE
|
||||
-** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
|
||||
-** option to [sqlite3_db_config()] can be used to change the lookaside
|
||||
-** configuration on individual connections.)^ </dd>
|
||||
+** size of each lookaside buffer slot ("sz") and the second is the number of
|
||||
+** slots allocated to each database connection ("cnt").)^
|
||||
+** ^(SQLITE_CONFIG_LOOKASIDE sets the <i>default</i> lookaside size.
|
||||
+** The [SQLITE_DBCONFIG_LOOKASIDE] option to [sqlite3_db_config()] can
|
||||
+** be used to change the lookaside configuration on individual connections.)^
|
||||
+** The [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to change the
|
||||
+** default lookaside configuration at compile-time.
|
||||
+** </dd>
|
||||
**
|
||||
** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
|
||||
** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
|
||||
@@ -2210,24 +2213,43 @@ struct sqlite3_mem_methods {
|
||||
** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
|
||||
** <dd> ^This option takes three additional arguments that determine the
|
||||
** [lookaside memory allocator] configuration for the [database connection].
|
||||
-** ^The first argument (the third parameter to [sqlite3_db_config()] is a
|
||||
+** <ol>
|
||||
+** <li><p>The first argument ("buf") is a
|
||||
** pointer to a memory buffer to use for lookaside memory.
|
||||
-** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
|
||||
-** may be NULL in which case SQLite will allocate the
|
||||
-** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
|
||||
-** size of each lookaside buffer slot. ^The third argument is the number of
|
||||
-** slots. The size of the buffer in the first argument must be greater than
|
||||
-** or equal to the product of the second and third arguments. The buffer
|
||||
-** must be aligned to an 8-byte boundary. ^If the second argument to
|
||||
-** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally
|
||||
-** rounded down to the next smaller multiple of 8. ^(The lookaside memory
|
||||
+** The first argument may be NULL in which case SQLite will allocate the
|
||||
+** lookaside buffer itself using [sqlite3_malloc()].
|
||||
+** <li><P>The second argument ("sz") is the
|
||||
+** size of each lookaside buffer slot. Lookaside is disabled if "sz"
|
||||
+** is less than 8. The "sz" argument should be a multiple of 8 less than
|
||||
+** 65536. If "sz" does not meet this constraint, it is reduced in size until
|
||||
+** it does.
|
||||
+** <li><p>The third argument ("cnt") is the number of slots. Lookaside is disabled
|
||||
+** if "cnt"is less than 1. The "cnt" value will be reduced, if necessary, so
|
||||
+** that the product of "sz" and "cnt" does not exceed 2,147,418,112. The "cnt"
|
||||
+** parameter is usually chosen so that the product of "sz" and "cnt" is less
|
||||
+** than 1,000,000.
|
||||
+** </ol>
|
||||
+** <p>If the "buf" argument is not NULL, then it must
|
||||
+** point to a memory buffer with a size that is greater than
|
||||
+** or equal to the product of "sz" and "cnt".
|
||||
+** The buffer must be aligned to an 8-byte boundary.
|
||||
+** The lookaside memory
|
||||
** configuration for a database connection can only be changed when that
|
||||
** connection is not currently using lookaside memory, or in other words
|
||||
-** when the "current value" returned by
|
||||
-** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
|
||||
+** when the value returned by [SQLITE_DBSTATUS_LOOKASIDE_USED] is zero.
|
||||
** Any attempt to change the lookaside memory configuration when lookaside
|
||||
** memory is in use leaves the configuration unchanged and returns
|
||||
-** [SQLITE_BUSY].)^</dd>
|
||||
+** [SQLITE_BUSY].
|
||||
+** If the "buf" argument is NULL and an attempt
|
||||
+** to allocate memory based on "sz" and "cnt" fails, then
|
||||
+** lookaside is silently disabled.
|
||||
+** <p>
|
||||
+** The [SQLITE_CONFIG_LOOKASIDE] configuration option can be used to set the
|
||||
+** default lookaside configuration at initialization. The
|
||||
+** [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to set the default lookaside
|
||||
+** configuration at compile-time. Typical values for lookaside are 1200 for
|
||||
+** "sz" and 40 to 100 for "cnt".
|
||||
+** </dd>
|
||||
**
|
||||
** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
|
||||
** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
|
||||
@@ -0,0 +1,29 @@
|
||||
From d7f45414935e4ef6e3361f02a22876f1ee7a04aa Mon Sep 17 00:00:00 2001
|
||||
From: drh <>
|
||||
Date: Sun, 16 Feb 2025 10:57:25 +0000
|
||||
Subject: [PATCH] Add a typecast to avoid 32-bit integer overflow in the
|
||||
concat_ws() function with an enormous separator values and many arguments.
|
||||
|
||||
FossilOrigin-Name: 498e3f1cf57f164fbd8380e92bf91b9f26d6aa05d092fcd135d754abf1e5b1b5
|
||||
|
||||
CVE: CVE-2025-3277
|
||||
CVE: CVE-2025-29087
|
||||
Upstream-Status: Backport [https://sqlite.org/src/info/498e3f1cf57f164f]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
sqlite3.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sqlite3.c b/sqlite3.c
|
||||
index 08c593e55c..24d0d954d9 100644
|
||||
--- a/sqlite3.c
|
||||
+++ b/sqlite3.c
|
||||
@@ -129594,7 +129594,7 @@ static void concatFuncCore(
|
||||
for(i=0; i<argc; i++){
|
||||
n += sqlite3_value_bytes(argv[i]);
|
||||
}
|
||||
- n += (argc-1)*nSep;
|
||||
+ n += (argc-1)*(i64)nSep;
|
||||
z = sqlite3_malloc64(n+1);
|
||||
if( z==0 ){
|
||||
sqlite3_result_error_nomem(context);
|
||||
@@ -0,0 +1,112 @@
|
||||
From a91c0d55011d06858726d4783fd16ed8ec71e793 Mon Sep 17 00:00:00 2001
|
||||
From: drh <>
|
||||
Date: Fri, 27 Jun 2025 19:02:21 +0000
|
||||
Subject: [PATCH] Raise an error right away if the number of aggregate terms in
|
||||
a query exceeds the maximum number of columns.
|
||||
|
||||
FossilOrigin-Name: 5508b56fd24016c13981ec280ecdd833007c9d8dd595edb295b984c2b487b5c8
|
||||
|
||||
CVE: CVE-2025-6965
|
||||
Upstream-Status: Backport [https://github.com/sqlite/sqlite/commit/c52e9d97d485a3eb168e3f8f3674a7bc4b419703]
|
||||
Signed-off-by: Roland Kovacs <roland.kovacs@est.tech>
|
||||
---
|
||||
sqlite3.c | 30 ++++++++++++++++++++++++++----
|
||||
1 file changed, 26 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/sqlite3.c b/sqlite3.c
|
||||
index 1ee8de4a85..5c7c126076 100644
|
||||
--- a/sqlite3.c
|
||||
+++ b/sqlite3.c
|
||||
@@ -15000,6 +15000,14 @@ typedef INT16_TYPE LogEst;
|
||||
#define LARGEST_UINT64 (0xffffffff|(((u64)0xffffffff)<<32))
|
||||
#define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
|
||||
|
||||
+/*
|
||||
+** Macro SMXV(n) return the maximum value that can be held in variable n,
|
||||
+** assuming n is a signed integer type. UMXV(n) is similar for unsigned
|
||||
+** integer types.
|
||||
+*/
|
||||
+#define SMXV(n) ((((i64)1)<<(sizeof(n)*8-1))-1)
|
||||
+#define UMXV(n) ((((i64)1)<<(sizeof(n)*8))-1)
|
||||
+
|
||||
/*
|
||||
** Round up a number to the next larger multiple of 8. This is used
|
||||
** to force 8-byte alignment on 64-bit architectures.
|
||||
@@ -18785,7 +18793,7 @@ struct AggInfo {
|
||||
** from source tables rather than from accumulators */
|
||||
u8 useSortingIdx; /* In direct mode, reference the sorting index rather
|
||||
** than the source table */
|
||||
- u16 nSortingColumn; /* Number of columns in the sorting index */
|
||||
+ u32 nSortingColumn; /* Number of columns in the sorting index */
|
||||
int sortingIdx; /* Cursor number of the sorting index */
|
||||
int sortingIdxPTab; /* Cursor number of pseudo-table */
|
||||
int iFirstReg; /* First register in range for aCol[] and aFunc[] */
|
||||
@@ -18794,8 +18802,8 @@ struct AggInfo {
|
||||
Table *pTab; /* Source table */
|
||||
Expr *pCExpr; /* The original expression */
|
||||
int iTable; /* Cursor number of the source table */
|
||||
- i16 iColumn; /* Column number within the source table */
|
||||
- i16 iSorterColumn; /* Column number in the sorting index */
|
||||
+ int iColumn; /* Column number within the source table */
|
||||
+ int iSorterColumn; /* Column number in the sorting index */
|
||||
} *aCol;
|
||||
int nColumn; /* Number of used entries in aCol[] */
|
||||
int nAccumulator; /* Number of columns that show through to the output.
|
||||
@@ -115162,7 +115170,9 @@ static void findOrCreateAggInfoColumn(
|
||||
){
|
||||
struct AggInfo_col *pCol;
|
||||
int k;
|
||||
+ int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN];
|
||||
|
||||
+ assert( mxTerm <= SMXV(i16) );
|
||||
assert( pAggInfo->iFirstReg==0 );
|
||||
pCol = pAggInfo->aCol;
|
||||
for(k=0; k<pAggInfo->nColumn; k++, pCol++){
|
||||
@@ -115180,6 +115190,10 @@ static void findOrCreateAggInfoColumn(
|
||||
assert( pParse->db->mallocFailed );
|
||||
return;
|
||||
}
|
||||
+ if( k>mxTerm ){
|
||||
+ sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm);
|
||||
+ k = mxTerm;
|
||||
+ }
|
||||
pCol = &pAggInfo->aCol[k];
|
||||
assert( ExprUseYTab(pExpr) );
|
||||
pCol->pTab = pExpr->y.pTab;
|
||||
@@ -115213,6 +115227,7 @@ fix_up_expr:
|
||||
if( pExpr->op==TK_COLUMN ){
|
||||
pExpr->op = TK_AGG_COLUMN;
|
||||
}
|
||||
+ assert( k <= SMXV(pExpr->iAgg) );
|
||||
pExpr->iAgg = (i16)k;
|
||||
}
|
||||
|
||||
@@ -115297,13 +115312,19 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
|
||||
** function that is already in the pAggInfo structure
|
||||
*/
|
||||
struct AggInfo_func *pItem = pAggInfo->aFunc;
|
||||
+ int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN];
|
||||
+ assert( mxTerm <= SMXV(i16) );
|
||||
for(i=0; i<pAggInfo->nFunc; i++, pItem++){
|
||||
if( NEVER(pItem->pFExpr==pExpr) ) break;
|
||||
if( sqlite3ExprCompare(0, pItem->pFExpr, pExpr, -1)==0 ){
|
||||
break;
|
||||
}
|
||||
}
|
||||
- if( i>=pAggInfo->nFunc ){
|
||||
+ if( i>mxTerm ){
|
||||
+ sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm);
|
||||
+ i = mxTerm;
|
||||
+ assert( i<pAggInfo->nFunc );
|
||||
+ }else if( i>=pAggInfo->nFunc ){
|
||||
/* pExpr is original. Make a new entry in pAggInfo->aFunc[]
|
||||
*/
|
||||
u8 enc = ENC(pParse->db);
|
||||
@@ -115357,6 +115378,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
|
||||
*/
|
||||
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
|
||||
ExprSetVVAProperty(pExpr, EP_NoReduce);
|
||||
+ assert( i <= SMXV(pExpr->iAgg) );
|
||||
pExpr->iAgg = (i16)i;
|
||||
pExpr->pAggInfo = pAggInfo;
|
||||
return WRC_Prune;
|
||||
Reference in New Issue
Block a user