mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Fix an off-by-one boundary-value issue in walCleanupHash().
FossilOrigin-Name: f039552e6330b6a04281748f985b41937f534bd0
This commit is contained in:
24
manifest
24
manifest
@@ -1,5 +1,8 @@
|
|||||||
C Do\snot\shold\sthe\sshared-memory\smutex\sin\sos_unix.c\sif\sreturning\sNULL.
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
D 2010-06-01T11:08:57
|
Hash: SHA1
|
||||||
|
|
||||||
|
C Fix\san\soff-by-one\sboundary-value\sissue\sin\swalCleanupHash().
|
||||||
|
D 2010-06-01T12:58:41
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
|
F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -224,7 +227,7 @@ F src/vdbeblob.c 5327132a42a91e8b7acfb60b9d2c3b1c5c863e0e
|
|||||||
F src/vdbemem.c 2a82f455f6ca6f78b59fb312f96054c04ae0ead1
|
F src/vdbemem.c 2a82f455f6ca6f78b59fb312f96054c04ae0ead1
|
||||||
F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
|
F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
|
||||||
F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
|
F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
|
||||||
F src/wal.c a18a20596b8b9ea09ed9c8741f9193e165f0cb6f
|
F src/wal.c 2a122212dcf4c3955f0c481423d1229f2de243c5
|
||||||
F src/wal.h 1c1c9feb629b7f4afcbe0b47f80f47c5551d3a02
|
F src/wal.h 1c1c9feb629b7f4afcbe0b47f80f47c5551d3a02
|
||||||
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
|
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
|
||||||
F src/where.c 75fee9e255b62f773fcadd1d1f25b6f63ac7a356
|
F src/where.c 75fee9e255b62f773fcadd1d1f25b6f63ac7a356
|
||||||
@@ -815,7 +818,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 9e95e35728cf69a0ae50e774d7f6c71a41b17d97
|
P 9622dd468c8914262e9d8bd8dbca9e22ec6ee75c
|
||||||
R 67ccfc3b179b63c3e3b80e2b7e1142bd
|
R 2027cf2e3628664b2b4aeae9063b73e6
|
||||||
U dan
|
U drh
|
||||||
Z 560dece5b4a16dc5e0eff482c3f02a96
|
Z 6523cefeaece12ca468a422414c222b4
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
|
iD8DBQFMBQQFoxKgR168RlERArWrAJkB9UGjRw3tmehhDr5P1HYBMojm4gCfca8+
|
||||||
|
OpbJgYgS2VEE4rPB1ieyWGg=
|
||||||
|
=X2Kt
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
|
@@ -1 +1 @@
|
|||||||
9622dd468c8914262e9d8bd8dbca9e22ec6ee75c
|
f039552e6330b6a04281748f985b41937f534bd0
|
11
src/wal.c
11
src/wal.c
@@ -822,11 +822,16 @@ static void walCleanupHash(Wal *pWal){
|
|||||||
int iLimit; /* Zero values greater than this */
|
int iLimit; /* Zero values greater than this */
|
||||||
|
|
||||||
assert( pWal->writeLock );
|
assert( pWal->writeLock );
|
||||||
walHashFind(pWal, pWal->hdr.mxFrame+1, &aHash, &aPgno, &iZero);
|
testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE-1 );
|
||||||
iLimit = pWal->hdr.mxFrame - iZero;
|
testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE );
|
||||||
if( iLimit>0 ){
|
testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE+1 );
|
||||||
|
if( (pWal->hdr.mxFrame % HASHTABLE_NPAGE)>0 ){
|
||||||
int nByte; /* Number of bytes to zero in aPgno[] */
|
int nByte; /* Number of bytes to zero in aPgno[] */
|
||||||
int i; /* Used to iterate through aHash[] */
|
int i; /* Used to iterate through aHash[] */
|
||||||
|
|
||||||
|
walHashFind(pWal, pWal->hdr.mxFrame+1, &aHash, &aPgno, &iZero);
|
||||||
|
iLimit = pWal->hdr.mxFrame - iZero;
|
||||||
|
assert( iLimit>0 );
|
||||||
for(i=0; i<HASHTABLE_NSLOT; i++){
|
for(i=0; i<HASHTABLE_NSLOT; i++){
|
||||||
if( aHash[i]>iLimit ){
|
if( aHash[i]>iLimit ){
|
||||||
aHash[i] = 0;
|
aHash[i] = 0;
|
||||||
|
Reference in New Issue
Block a user