diff options
author | dan <Dan Kennedy> | 2022-01-05 15:54:02 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2022-01-05 15:54:02 +0000 |
commit | c6977c1c0d5da2d3d1d1ebd23547856e25a24d54 (patch) | |
tree | e09df5e70daf41d1bb87fa1c3b686e73e8b8f813 /src/trigger.c | |
parent | ebc4434e997e428bdb13ebd6cd06d41d3cbf5d40 (diff) | |
download | sqlite-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.c | 7 |
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); |