1diff -Npur sqlite-version-3.36.0/ext/session/sqlite3session.c sqlite-version-3.36.0-change/ext/session/sqlite3session.c 2--- sqlite-version-3.36.0/ext/session/sqlite3session.c 2021-06-19 02:36:39.000000000 +0800 3+++ sqlite-version-3.36.0-change/ext/session/sqlite3session.c 2024-01-02 14:28:11.354114191 +0800 4@@ -3020,15 +3020,19 @@ static int sessionReadRecord( 5 } 6 } 7 if( eType==SQLITE_INTEGER || eType==SQLITE_FLOAT ){ 8- sqlite3_int64 v = sessionGetI64(aVal); 9- if( eType==SQLITE_INTEGER ){ 10- sqlite3VdbeMemSetInt64(apOut[i], v); 11+ if( (pIn->nData-pIn->iNext)<8 ){ 12+ rc = SQLITE_CORRUPT_BKPT 13 }else{ 14- double d; 15- memcpy(&d, &v, 8); 16- sqlite3VdbeMemSetDouble(apOut[i], d); 17+ sqlite3_int64 v = sessionGetI64(aVal); 18+ if( eType==SQLITE_INTEGER ){ 19+ sqlite3VdbeMemSetInt64(apOut[i], v); 20+ }else{ 21+ double d; 22+ memcpy(&d, &v, 8); 23+ sqlite3VdbeMemSetDouble(apOut[i], d); 24+ } 25+ pIn->iNext += 8; 26 } 27- pIn->iNext += 8; 28 } 29 } 30 } 31