mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Avoid harmless integer overflow in pager status statistics gathering.
Response to [forum:/forumpost/7f4cdf23f9|forum post 7f4cdf23f9]. FossilOrigin-Name: 206d8c650d937bc700946c40a82a62ea6bc4a80e5f3fb42d0ae2968de25f0644
This commit is contained in:
10
src/pager.c
10
src/pager.c
@@ -688,7 +688,7 @@ struct Pager {
|
||||
char *zJournal; /* Name of the journal file */
|
||||
int (*xBusyHandler)(void*); /* Function to call when busy */
|
||||
void *pBusyHandlerArg; /* Context argument for xBusyHandler */
|
||||
int aStat[4]; /* Total cache hits, misses, writes, spills */
|
||||
u32 aStat[4]; /* Total cache hits, misses, writes, spills */
|
||||
#ifdef SQLITE_TEST
|
||||
int nRead; /* Database pages read */
|
||||
#endif
|
||||
@@ -6832,11 +6832,11 @@ int *sqlite3PagerStats(Pager *pPager){
|
||||
a[3] = pPager->eState==PAGER_OPEN ? -1 : (int) pPager->dbSize;
|
||||
a[4] = pPager->eState;
|
||||
a[5] = pPager->errCode;
|
||||
a[6] = pPager->aStat[PAGER_STAT_HIT];
|
||||
a[7] = pPager->aStat[PAGER_STAT_MISS];
|
||||
a[6] = (int)pPager->aStat[PAGER_STAT_HIT] & 0x7fffffff;
|
||||
a[7] = (int)pPager->aStat[PAGER_STAT_MISS] & 0x7fffffff;
|
||||
a[8] = 0; /* Used to be pPager->nOvfl */
|
||||
a[9] = pPager->nRead;
|
||||
a[10] = pPager->aStat[PAGER_STAT_WRITE];
|
||||
a[10] = (int)pPager->aStat[PAGER_STAT_WRITE] & 0x7fffffff;
|
||||
return a;
|
||||
}
|
||||
#endif
|
||||
@@ -6852,7 +6852,7 @@ int *sqlite3PagerStats(Pager *pPager){
|
||||
** reset parameter is non-zero, the cache hit or miss count is zeroed before
|
||||
** returning.
|
||||
*/
|
||||
void sqlite3PagerCacheStat(Pager *pPager, int eStat, int reset, int *pnVal){
|
||||
void sqlite3PagerCacheStat(Pager *pPager, int eStat, int reset, u64 *pnVal){
|
||||
|
||||
assert( eStat==SQLITE_DBSTATUS_CACHE_HIT
|
||||
|| eStat==SQLITE_DBSTATUS_CACHE_MISS
|
||||
|
Reference in New Issue
Block a user