diff options
author | drh <drh@noemail.net> | 2019-11-21 20:10:31 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2019-11-21 20:10:31 +0000 |
commit | 7dc76d8ba03f4ad649d4022d78e94e6cb8ed0355 (patch) | |
tree | b4481fdc0686047abb92d41cee6cee9cd074861e /src | |
parent | 522ebfa7cee96fb325a22ea3a2464a63485886a8 (diff) | |
download | sqlite-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.c | 5 |
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; |