Check for a failure in the call to sqlite3PagerPagecount() from within

sqlite3PagerWrite().  (Error discovered by valgrind.)

FossilOrigin-Name: d64d181c79aee3501be6f7eb8c11ab2cc9a8d63c
This commit is contained in:
drh 2010-04-02 13:25:22 +00:00
parent a378c566d2
commit 34e2b837d5
3 changed files with 12 additions and 11 deletions

View File

@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
C Take\scare\sto\savoid\sa\sbuffer\sover-read\swhen\sadding\sa\sKEYINFO\sstructure\s\nto\sthe\sP4\sparameter\sof\san\sopcode.
D 2010-04-02T12:55:39
C Check\sfor\sa\sfailure\sin\sthe\scall\sto\ssqlite3PagerPagecount()\sfrom\swithin\nsqlite3PagerWrite().\s\s(Error\sdiscovered\sby\svalgrind.)
D 2010-04-02T13:25:22
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -155,7 +155,7 @@ F src/os_common.h 240c88b163b02c21a9f21f87d49678a0aa21ff30
F src/os_os2.c 75a8c7b9a00a2cf1a65f9fa4afbc27d46634bb2f
F src/os_unix.c 148d2f625db3727250c0b880481ae7630b6d0eb0
F src/os_win.c 1c7453c2df4dab26d90ff6f91272aea18bcf7053
F src/pager.c 2ac73f55f5782c434c91ce48c756060e1366aeb7
F src/pager.c 4f21866040755ce5197b2aeb2be0347b4eb8533f
F src/pager.h ef8a2cf10084f60ab45ee2dfded8bf8b0c655ddf
F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
F src/pcache.c ace8f6a5ecd4711cc66a1b23053be7109bd437cf
@ -797,14 +797,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 8eb1f2443f2712920452b7ed3fb835c7f3221191
R 7b23fa04681509f7f03c180e2cb207ef
P 937b931a7cdad6874638158ed6a9ab6356b0bd0c
R 73d7e6cd9e7a10e0bf151c9030c3b0d7
U drh
Z be5a4dabda99980b85561772989aa01d
Z 8d895a1ff28772dc8276f305b1442c69
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFLtelOoxKgR168RlERAgU6AJ0QBxber/Z+M94ECEzPsGlPVSdrvwCeNxOo
XLX0wypT7RatZGUdGUJO7Dk=
=S/qb
iD8DBQFLtfBFoxKgR168RlERAqICAJ9gxXTQ86C6yFFViOOB09EP7vEcTgCeND0B
nBWy7JzkNrn+iM2JC6lOT94=
=zLIR
-----END PGP SIGNATURE-----

View File

@ -1 +1 @@
937b931a7cdad6874638158ed6a9ab6356b0bd0c
d64d181c79aee3501be6f7eb8c11ab2cc9a8d63c

View File

@ -4322,7 +4322,8 @@ int sqlite3PagerWrite(DbPage *pDbPage){
*/
pg1 = ((pPg->pgno-1) & ~(nPagePerSector-1)) + 1;
sqlite3PagerPagecount(pPager, (int *)&nPageCount);
rc = sqlite3PagerPagecount(pPager, (int *)&nPageCount);
if( rc ) return rc;
if( pPg->pgno>nPageCount ){
nPage = (pPg->pgno - pg1)+1;
}else if( (pg1+nPagePerSector-1)>nPageCount ){