From: drh Date: Wed, 7 May 2008 12:45:41 +0000 (+0000) Subject: Fix a null-pointer dereference that can occur following a DISKFULL error X-Git-Tag: version-3.6.10~1081 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6eac06e6e08f8c3a8eb027ca6d8dc18907747175;p=thirdparty%2Fsqlite.git Fix a null-pointer dereference that can occur following a DISKFULL error while running VACUUM. (CVS 5096) FossilOrigin-Name: 438d77a762a6f3cc7438e4d688013cc26e3e9486 --- diff --git a/manifest b/manifest index 6fbb7dd7e9..8a25af8b32 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Omit\smutex\svariables\sin\sthe\spager\swhen\sthreadsafe\sis\sdisabled.\s(CVS\s5095) -D 2008-05-07T12:29:56 +C Fix\sa\snull-pointer\sdereference\sthat\scan\soccur\sfollowing\sa\sDISKFULL\serror\nwhile\srunning\sVACUUM.\s(CVS\s5096) +D 2008-05-07T12:45:41 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7 F Makefile.in 8b9b8263852f0217157f9042b8e3dae7427ec739 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -121,7 +121,7 @@ F src/os_common.h e8b748b2f2ecc8a498e50bfe5d8721f189c19d2a F src/os_os2.c 30c378b093d9c17387ebb0ebbf21b7d55a98202b F src/os_unix.c a810e2aefdaddacf479407f76f8f4ca381d231b2 F src/os_win.c 3a60bddd07ea6f8adb2314dd5996ac97b988f403 -F src/pager.c bc506fe98357d6be270c226f7593cdd7b7ef6f79 +F src/pager.c 547079d36fb3ca227e77e669268ea910c90774ef F src/pager.h 4f051fd856de6fd3c19aef5f82eace54122b9173 F src/parse.y fc4bd35c6088901f7c8daead26c6fb11c87d22e7 F src/pragma.c 2e4bb2e76e48a32750529fdc4bfe86ac5f54e01b @@ -632,7 +632,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P ed98df24a3362c2d20f52bb1ce679787b3ee408b -R b674e29d0c635e566d4d022cc3c91e32 +P d15d0bbab043e4366f7988423115babb550198a1 +R cc97a864eea5af3981d05a3f9edeedde U drh -Z 2bfb50f482bb16c5a2226fe3210bd145 +Z 953a72f11c0f918cae5f87eb3c8317a8 diff --git a/manifest.uuid b/manifest.uuid index a7d8c0da18..02e6707dd6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d15d0bbab043e4366f7988423115babb550198a1 \ No newline at end of file +438d77a762a6f3cc7438e4d688013cc26e3e9486 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 5fdf999b24..5a7c2667fb 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.441 2008/05/07 12:29:56 drh Exp $ +** @(#) $Id: pager.c,v 1.442 2008/05/07 12:45:41 drh Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -3858,7 +3858,10 @@ DbPage *sqlite3PagerLookup(Pager *pPager, Pgno pgno){ ** removed. */ int sqlite3PagerUnref(DbPage *pPg){ - Pager *pPager = pPg->pPager; + Pager *pPager; + + if( pPg==0 ) return SQLITE_OK; + pPager = pPg->pPager; /* Decrement the reference count for this page */