diff options
author | stephan <stephan@noemail.net> | 2023-10-14 20:01:55 +0000 |
---|---|---|
committer | stephan <stephan@noemail.net> | 2023-10-14 20:01:55 +0000 |
commit | eb62ccdab5d88ab9962d07194c6a24363ad986d0 (patch) | |
tree | 3f7ccada573f74045f62f539150a809bfeb6a63a /src/vdbeapi.c | |
parent | 4213cc78cde2d9fa8b9ede1e133749f61e09330f (diff) | |
download | sqlite-eb62ccdab5d88ab9962d07194c6a24363ad986d0.tar.gz sqlite-eb62ccdab5d88ab9962d07194c6a24363ad986d0.zip |
Add API_ARMOR support to the scanstatus family of functions.
FossilOrigin-Name: 2f3101f016d5f8d954a262befdf5e0f938a223e444bc534e1d3655b733f4663d
Diffstat (limited to 'src/vdbeapi.c')
-rw-r--r-- | src/vdbeapi.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/vdbeapi.c b/src/vdbeapi.c index f878f2a2a..b0a40cf6d 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -1963,6 +1963,9 @@ int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt){ int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode){ Vdbe *v = (Vdbe*)pStmt; int rc; +#ifdef SQLITE_ENABLE_API_ARMOR + if( pStmt==0 ) return SQLITE_MISUSE_BKPT; +#endif sqlite3_mutex_enter(v->db->mutex); if( ((int)v->explain)==eMode ){ rc = SQLITE_OK; @@ -2342,11 +2345,16 @@ int sqlite3_stmt_scanstatus_v2( void *pOut /* OUT: Write the answer here */ ){ Vdbe *p = (Vdbe*)pStmt; - VdbeOp *aOp = p->aOp; - int nOp = p->nOp; + VdbeOp *aOp; + int nOp; ScanStatus *pScan = 0; int idx; +#ifdef SQLITE_ENABLE_API_ARMOR + if( p==0 ) return 1; +#endif + aOp = p->aOp; + nOp = p->nOp; if( p->pFrame ){ VdbeFrame *pFrame; for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent); @@ -2493,7 +2501,7 @@ int sqlite3_stmt_scanstatus( void sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){ Vdbe *p = (Vdbe*)pStmt; int ii; - for(ii=0; ii<p->nOp; ii++){ + for(ii=0; p!=0 && ii<p->nOp; ii++){ Op *pOp = &p->aOp[ii]; pOp->nExec = 0; pOp->nCycle = 0; |