aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-11-21 20:10:31 +0000
committerdrh <drh@noemail.net>2019-11-21 20:10:31 +0000
commit7dc76d8ba03f4ad649d4022d78e94e6cb8ed0355 (patch)
treeb4481fdc0686047abb92d41cee6cee9cd074861e /src
parent522ebfa7cee96fb325a22ea3a2464a63485886a8 (diff)
downloadsqlite-7dc76d8ba03f4ad649d4022d78e94e6cb8ed0355.tar.gz
sqlite-7dc76d8ba03f4ad649d4022d78e94e6cb8ed0355.zip
Fix an out-of-bounds array reference in the generated column logic.
Problem discovered by valgrind. FossilOrigin-Name: a0ab42f779b9a96f4e43879210dfaba8fa593de77fc0ec0e2e6f116d9301ea59
Diffstat (limited to 'src')
-rw-r--r--src/insert.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/insert.c b/src/insert.c
index 73f6bdb3e..482a2aff7 100644
--- a/src/insert.c
+++ b/src/insert.c
@@ -202,10 +202,11 @@ static int readsTable(Parse *p, int iDb, Table *pTab){
}
/* This walker callback will compute the union of colFlags flags for all
-** references columns in a CHECK constraint or generated column expression.
+** referenced columns in a CHECK constraint or generated column expression.
*/
static int exprColumnFlagUnion(Walker *pWalker, Expr *pExpr){
- if( pExpr->op==TK_COLUMN ){
+ if( pExpr->op==TK_COLUMN && pExpr->iColumn>=0 ){
+ assert( pExpr->iColumn < pWalker->u.pTab->nCol );
pWalker->eCode |= pWalker->u.pTab->aCol[pExpr->iColumn].colFlags;
}
return WRC_Continue;