SQLite

Check-in [988c3179]
Login

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

Overview
Comment:In the recovery extension, if a payload size is unreasonably large, it is probably corrupt, so truncate it.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 988c3179e978a3a6d42541e9c7a2ab98150383671810926503376ed808f150ff
User & Date: drh 2023-11-29 13:47:46
Context
2023-11-30
10:00
Update some OPFS-related help text in WASM tests. Minor cleanups in speedtest1-worker.js. (check-in: 263f6d3a user: stephan tags: trunk)
2023-11-29
13:47
In the recovery extension, if a payload size is unreasonably large, it is probably corrupt, so truncate it. (check-in: 988c3179 user: drh tags: trunk)
02:45
The assertion change at check-in [7946c79567b0ccd3] is insufficient to fix the problem of a Table object being deleted out from under the OP_VCheck opcode. We need to reference count the Table, which is accomplished here. (check-in: cad269d5 user: drh tags: trunk)
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ext/recover/dbdata.c.

578
579
580
581
582
583
584

585
586
587
588
589
590
591
          iOff += nPointer;
    
          /* Load the "byte of payload including overflow" field */
          if( bNextPage || iOff>pCsr->nPage ){
            bNextPage = 1;
          }else{
            iOff += dbdataGetVarintU32(&pCsr->aPage[iOff], &nPayload);

          }
    
          /* If this is a leaf intkey cell, load the rowid */
          if( bHasRowid && !bNextPage && iOff<pCsr->nPage ){
            iOff += dbdataGetVarint(&pCsr->aPage[iOff], &pCsr->iIntkey);
          }
    







>







578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
          iOff += nPointer;
    
          /* Load the "byte of payload including overflow" field */
          if( bNextPage || iOff>pCsr->nPage ){
            bNextPage = 1;
          }else{
            iOff += dbdataGetVarintU32(&pCsr->aPage[iOff], &nPayload);
            if( nPayload>0x7fffff00 ) nPayload &= 0x3fff;
          }
    
          /* If this is a leaf intkey cell, load the rowid */
          if( bHasRowid && !bNextPage && iOff<pCsr->nPage ){
            iOff += dbdataGetVarint(&pCsr->aPage[iOff], &pCsr->iIntkey);
          }