aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2022-01-05 15:54:02 +0000
committerdan <Dan Kennedy>2022-01-05 15:54:02 +0000
commitc6977c1c0d5da2d3d1d1ebd23547856e25a24d54 (patch)
treee09df5e70daf41d1bb87fa1c3b686e73e8b8f813 /src/trigger.c
parentebc4434e997e428bdb13ebd6cd06d41d3cbf5d40 (diff)
downloadsqlite-c6977c1c0d5da2d3d1d1ebd23547856e25a24d54.tar.gz
sqlite-c6977c1c0d5da2d3d1d1ebd23547856e25a24d54.zip
Fix an assert() failure that could follow an OOM when coding a RETURNING trigger. dbsqlfuzz case 5d3e2438f15dc32b473d9f29413157857efa1212.
FossilOrigin-Name: 7ae596dd4a73a09585c5dc9f4faf75d126d0733fc2fb32c1de64126a1088d967
Diffstat (limited to 'src/trigger.c')
-rw-r--r--src/trigger.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/trigger.c b/src/trigger.c
index 8d1e18e7d..6b71c9816 100644
--- a/src/trigger.c
+++ b/src/trigger.c
@@ -945,7 +945,9 @@ static void codeReturningTrigger(
sNC.ncFlags = NC_UBaseReg;
pParse->eTriggerOp = pTrigger->op;
pParse->pTriggerTab = pTab;
- if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK ){
+ if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK
+ && !db->mallocFailed
+ ){
int i;
int nCol = pNew->nExpr;
int reg = pParse->nMem+1;
@@ -953,8 +955,7 @@ static void codeReturningTrigger(
pReturning->iRetReg = reg;
for(i=0; i<nCol; i++){
Expr *pCol = pNew->a[i].pExpr;
- assert( pCol!=0 || pParse->db->mallocFailed );
- if( NEVER(pCol==0) ) continue;
+ assert( pCol!=0 ); /* Due to !db->mallocFailed ~9 lines above */
sqlite3ExprCodeFactorable(pParse, pCol, reg+i);
if( sqlite3ExprAffinity(pCol)==SQLITE_AFF_REAL ){
sqlite3VdbeAddOp1(v, OP_RealAffinity, reg+i);