SQLite

Check-in [202f9919c2]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix a segfault that could follow an OOM when querying a table that has one or more columns with default values "true" or "false".
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 202f9919c222ee933924c63c15ad36ec4481457b1e4d9179af14c9f284117c0c
User & Date: dan 2019-01-25 17:26:59.972
Context
2019-01-25
17:51
Fix harmless compiler warnings in fuzzcheck (check-in: a825396657 user: drh tags: trunk)
17:26
Fix a segfault that could follow an OOM when querying a table that has one or more columns with default values "true" or "false". (check-in: 202f9919c2 user: dan tags: trunk)
16:54
Fix asan warnings in fts5 triggered by corrupt databases - passing NULL to memcmp, out-of-range left-shift values and signed integer overflow. (check-in: 93f8ec146d user: dan tags: trunk)
Changes
Unified Diff Show Whitespace Changes Patch
Changes to src/vdbemem.c.
1527
1528
1529
1530
1531
1532
1533

1534
1535
1536

1537
1538
1539
1540
1541
1542
1543
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  else if( op==TK_FUNCTION && pCtx!=0 ){
    rc = valueFromFunction(db, pExpr, enc, affinity, &pVal, pCtx);
  }
#endif
  else if( op==TK_TRUEFALSE ){
     pVal = valueNew(db, pCtx);

     pVal->flags = MEM_Int;
     pVal->u.i = pExpr->u.zToken[4]==0;
  }


  *ppVal = pVal;
  return rc;

no_mem:
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  if( pCtx==0 || pCtx->pParse->nErr==0 )







>



>







1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  else if( op==TK_FUNCTION && pCtx!=0 ){
    rc = valueFromFunction(db, pExpr, enc, affinity, &pVal, pCtx);
  }
#endif
  else if( op==TK_TRUEFALSE ){
     pVal = valueNew(db, pCtx);
    if( pVal ){
     pVal->flags = MEM_Int;
     pVal->u.i = pExpr->u.zToken[4]==0;
  }
  }

  *ppVal = pVal;
  return rc;

no_mem:
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  if( pCtx==0 || pCtx->pParse->nErr==0 )
Added test/insertfault.test.








































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 2019-01-26
#
# The author disclaims copyright to this source code.  In place of
# a legal notice, here is a blessing:
#
#    May you do good and not evil.
#    May you find forgiveness for yourself and forgive others.
#    May you share freely, never taking more than you give.
#
#***********************************************************************
#
# Test cases for INSERT

set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix insertfault

do_execsql_test 1.0 {
  CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c, d DEFAULT true);
  INSERT INTO t1 DEFAULT VALUES;
  SELECT * FROM t1;
} {1 {} {} 1}
faultsim_save_and_close

breakpoint
do_faultsim_test 1 -faults oom* -prep {
  faultsim_restore_and_reopen
  db eval { SELECT * FROM sqlite_master } 
} -body {
  execsql { SELECT * FROM t1 }
} -test {
  faultsim_test_result {0 {1 {} {} 1}}
}


finish_test