SQLite

Check-in [527b5ba68c]
Login

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

Overview
Comment:Be sure to hold the database connection mutex while calling sqlite3VdbeExpand() from within sqlite3_expanded_sql().
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | sqlite3_trace_v2
Files: files | file ages | folders
SHA1: 527b5ba68c0b0185958b945b197f9022951d9379
User & Date: drh 2016-07-22 20:45:03.857
Context
2016-07-23
00:43
Fix sqlite3VdbeExpandSql() so that it handles OOMs by always returning NULL. (check-in: 5a027fe412 user: drh tags: sqlite3_trace_v2)
2016-07-22
20:45
Be sure to hold the database connection mutex while calling sqlite3VdbeExpand() from within sqlite3_expanded_sql(). (check-in: 527b5ba68c user: drh tags: sqlite3_trace_v2)
20:20
Add requirements marks to the sqlite3_expanded_sql() documentation. (check-in: 409535e6df user: drh tags: sqlite3_trace_v2)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/vdbeaux.c.
82
83
84
85
86
87
88

89

90


91
92
93
94
95
96
97
** expanded bound parameters.
*/
char *sqlite3_expanded_sql(sqlite3_stmt *pStmt){
#ifdef SQLITE_OMIT_TRACE
  return 0;
#else
  Vdbe *p = (Vdbe *)pStmt;

  if( p==0 || p->zSql==0 ) return 0;

  return sqlite3VdbeExpandSql(p, p->zSql);


#endif
}

/*
** Swap all content between two VDBE structures.
*/
void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){







>

>
|
>
>







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
** expanded bound parameters.
*/
char *sqlite3_expanded_sql(sqlite3_stmt *pStmt){
#ifdef SQLITE_OMIT_TRACE
  return 0;
#else
  Vdbe *p = (Vdbe *)pStmt;
  char *z;
  if( p==0 || p->zSql==0 ) return 0;
  sqlite3_mutex_enter(p->db->mutex);
  z = sqlite3VdbeExpandSql(p, p->zSql);
  sqlite3_mutex_leave(p->db->mutex);
  return z;
#endif
}

/*
** Swap all content between two VDBE structures.
*/
void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){