• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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