Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a segfault that can occur if a malloc fails in ATTACH in shared-cache mode. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e37137376a2b23062e2625b5285299b3 |
User & Date: | dan 2010-02-23 18:05:26 |
Original User & Date: | dan 2010-02-23 11:05:26 |
References
2010-02-25
| ||
02:11 | Fix a segfault that is possible for an OOM fault in ATTACH when in shared-cache mode. This is a cherrypick merge of check-in [e37137376a]. (check-in: f73cc0e9 user: drh tags: branch-3.6.22) | |
Context
2010-02-23
| ||
20:11 | Continuing improvements to error reporting and the sqlite3_log() routine. (check-in: edea3bb7 user: drh tags: trunk) | |
18:05 | Fix a segfault that can occur if a malloc fails in ATTACH in shared-cache mode. (check-in: e3713737 user: dan tags: trunk) | |
17:36 | Remove the obsolete sqlite3SafetyOn() mechanism. Add additional logging output for CORRUPT, and CANTOPEN errors. (check-in: 7c4cca6d user: drh tags: trunk) | |
Changes
Changes to src/attach.c.
︙ | ︙ | |||
143 144 145 146 147 148 149 150 | } pPager = sqlite3BtreePager(aNew->pBt); sqlite3PagerLockingMode(pPager, db->dfltLockMode); sqlite3PagerJournalMode(pPager, db->dfltJournalMode); sqlite3BtreeSecureDelete(aNew->pBt, sqlite3BtreeSecureDelete(db->aDb[0].pBt,-1) ); } aNew->zName = sqlite3DbStrDup(db, zName); | > > > > | | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | } pPager = sqlite3BtreePager(aNew->pBt); sqlite3PagerLockingMode(pPager, db->dfltLockMode); sqlite3PagerJournalMode(pPager, db->dfltJournalMode); sqlite3BtreeSecureDelete(aNew->pBt, sqlite3BtreeSecureDelete(db->aDb[0].pBt,-1) ); } aNew->safety_level = 3; aNew->zName = sqlite3DbStrDup(db, zName); if( rc==SQLITE_OK && aNew->zName==0 ){ rc = SQLITE_NOMEM; } #ifdef SQLITE_HAS_CODEC if( rc==SQLITE_OK ){ extern int sqlite3CodecAttach(sqlite3*, int, const void*, int); extern void sqlite3CodecGetKey(sqlite3*, int, void**, int*); int nKey; char *zKey; |
︙ | ︙ |
Changes to test/attachmalloc.test.
︙ | ︙ | |||
55 56 57 58 59 60 61 62 63 | CREATE INDEX i1 ON t1(a, b); } db2 close } -sqlbody { CREATE TABLE t1(d, e, f); ATTACH 'test2.db' AS db1; } finish_test | > > > > > > > > > > > > > | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | CREATE INDEX i1 ON t1(a, b); } db2 close } -sqlbody { CREATE TABLE t1(d, e, f); ATTACH 'test2.db' AS db1; } set enable_shared_cache [sqlite3_enable_shared_cache 1] sqlite3 dbaux test2.db dbaux eval {SELECT * FROM sqlite_master} do_malloc_test attachmalloc-3 -sqlbody { SELECT * FROM sqlite_master; ATTACH 'test2.db' AS two; } -cleanup { db eval { DETACH two } } dbaux close sqlite3_enable_shared_cache $enable_shared_cache finish_test |