Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Early detection out-of-bounds page numbers on the direct-overflow-read optimization gives consistent error messages regardless of whether or not the optimization is enabled. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b517a52fa36df0a0854a75858b5e8186 |
User & Date: | drh 2019-08-15 00:04:44.923 |
References
2024-01-02
| ||
22:49 | Back out [b517a52fa36df0a0] which is no longer reachable due to early error detection enhancements in [166e82dd20efbfd3]. (check-in: 704943e96f user: drh tags: trunk) | |
Context
2024-01-02
| ||
22:49 | Back out [b517a52fa36df0a0] which is no longer reachable due to early error detection enhancements in [166e82dd20efbfd3]. (check-in: 704943e96f user: drh tags: trunk) | |
2019-08-15
| ||
13:17 | Ensure that the cell overwrite optimization does not overwrite the header of the b-tree page. (check-in: 4cc5694cbd user: drh tags: trunk) | |
00:04 | Early detection out-of-bounds page numbers on the direct-overflow-read optimization gives consistent error messages regardless of whether or not the optimization is enabled. (check-in: b517a52fa3 user: drh tags: trunk) | |
2019-08-14
| ||
15:17 | Always check for reads past the end of the file on the in-memory journal driver. This used to be an assert(). (check-in: 4d41ca7d6e user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 | ){ sqlite3_file *fd = sqlite3PagerFile(pBt->pPager); u8 aSave[4]; u8 *aWrite = &pBuf[-4]; assert( aWrite>=pBufStart ); /* due to (6) */ memcpy(aSave, aWrite, 4); rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1)); nextPage = get4byte(aWrite); memcpy(aWrite, aSave, 4); }else #endif { DbPage *pDbPage; | > | 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 | ){ sqlite3_file *fd = sqlite3PagerFile(pBt->pPager); u8 aSave[4]; u8 *aWrite = &pBuf[-4]; assert( aWrite>=pBufStart ); /* due to (6) */ memcpy(aSave, aWrite, 4); rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1)); if( rc && nextPage>pBt->nPage ) rc = SQLITE_CORRUPT_BKPT; nextPage = get4byte(aWrite); memcpy(aWrite, aSave, 4); }else #endif { DbPage *pDbPage; |
︙ | ︙ |