/ Check-in [3869aef6]
Login

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

Overview
Comment:Make sure lookaside memory allocations are unusable after they are freed.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 3869aef6348018f584137f36f6924193a790e52f
User & Date: drh 2012-05-21 16:59:16
Context
2012-05-21
21:26
Merge the nested aggregate query fix (ticket [c2ad16f997ee9c8ed]) unto trunk. check-in: e459c336 user: drh tags: trunk
19:11
Convert the NameContext object from using u8 booleans to using individual bits in a single u8 as its booleans. This change might become a basis for a fix for [c2ad16f997ee9c]. check-in: 72226096 user: drh tags: nested-agg
16:59
Make sure lookaside memory allocations are unusable after they are freed. check-in: 3869aef6 user: drh tags: trunk
12:25
Move some #defines earlier in the file for test_quota.c in order to avoid a use before definition. check-in: fda1ea0b user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/malloc.c.

487
488
489
490
491
492
493




494
495
496
497
498
499
500
  if( db ){
    if( db->pnBytesFreed ){
      *db->pnBytesFreed += sqlite3DbMallocSize(db, p);
      return;
    }
    if( isLookaside(db, p) ){
      LookasideSlot *pBuf = (LookasideSlot*)p;




      pBuf->pNext = db->lookaside.pFree;
      db->lookaside.pFree = pBuf;
      db->lookaside.nOut--;
      return;
    }
  }
  assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );







>
>
>
>







487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
  if( db ){
    if( db->pnBytesFreed ){
      *db->pnBytesFreed += sqlite3DbMallocSize(db, p);
      return;
    }
    if( isLookaside(db, p) ){
      LookasideSlot *pBuf = (LookasideSlot*)p;
#if SQLITE_DEBUG
      /* Trash all content in the buffer being freed */
      memset(p, 0xaa, db->lookaside.sz);
#endif
      pBuf->pNext = db->lookaside.pFree;
      db->lookaside.pFree = pBuf;
      db->lookaside.nOut--;
      return;
    }
  }
  assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );