aboutsummaryrefslogtreecommitdiff
path: root/src/vdbeapi.c
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2023-10-14 20:01:55 +0000
committerstephan <stephan@noemail.net>2023-10-14 20:01:55 +0000
commiteb62ccdab5d88ab9962d07194c6a24363ad986d0 (patch)
tree3f7ccada573f74045f62f539150a809bfeb6a63a /src/vdbeapi.c
parent4213cc78cde2d9fa8b9ede1e133749f61e09330f (diff)
downloadsqlite-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.c14
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;