]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not allow a VACUUM to try to change the page_size on an encrypted database. (CVS...
authordrh <drh@noemail.net>
Tue, 17 Jun 2008 01:03:25 +0000 (01:03 +0000)
committerdrh <drh@noemail.net>
Tue, 17 Jun 2008 01:03:25 +0000 (01:03 +0000)
FossilOrigin-Name: d49e5020019093a5b8a4fbe09caeb84ecb538629

manifest
manifest.uuid
src/vacuum.c

index 770edd1a08063225c4ed86882360e0ab0780d72b..7403b91af373136f25d9ed72387f25c14af74f10 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Clean\sup\sobfuscated\scode\sin\ssqlite3_table_column_meta_data().\nBe\ssure\sto\sinvoke\ssqlite3_initialize()\swithin\ssqlite3_mprintf().\s(CVS\s5224)
-D 2008-06-16T20:51:16
+C Do\snot\sallow\sa\sVACUUM\sto\stry\sto\schange\sthe\spage_size\son\san\sencrypted\sdatabase.\s(CVS\s5225)
+D 2008-06-17T01:03:26
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in dc5608df93faf4406cfd7a1c8ed9ab93d8bfbfd5
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -179,7 +179,7 @@ F src/trigger.c 1e751f8d5ceeb328d26bf1ccfb2de50653670d49
 F src/update.c 2d7143b9014e955509cc4f323f9a9584fb898f34
 F src/utf.c 8c94fa10efc78c2568d08d436acc59df4df7191b
 F src/util.c 920d6d5dfdf25f7b85d2093705d8716f9b387e3b
-F src/vacuum.c a5c289e561ed72283e97d2485491986bc7d684eb
+F src/vacuum.c 14eb21b480924d87e791cd8ab6fb35ac563243ef
 F src/vdbe.c f6866986de706b98c2738040bc65907728650e8d
 F src/vdbe.h 1e3722d471739c2b213c6283b60373290e52f7ea
 F src/vdbeInt.h de321b2c02593e1420106634ed1f5a7d77ad35a7
@@ -594,7 +594,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 88e1c6092e48c860950d3437f264785243bb67ed
-R a1b6bf6dbc2358eb6da4aeb0eb037ba0
+P bb4edb53964559fc1cd69700beb72ecc29b58f37
+R 7166a804863eb0c7dec5311dc0bfcdb3
 U drh
-Z 3b2158d65e565f1ac34f84ff1bba4421
+Z 9f8da086219df1d3431408cc19590d26
index b51dbce506e154866df0162b064be15981a4c389..acdcace9cbd50b110284a2baf0bf029c32af9f16 100644 (file)
@@ -1 +1 @@
-bb4edb53964559fc1cd69700beb72ecc29b58f37
\ No newline at end of file
+d49e5020019093a5b8a4fbe09caeb84ecb538629
\ No newline at end of file
index ea2f535cad5cc51968eb78c684d78310b30d1771..89e9a2803968a2e5d2ec50024975cc697e43d13c 100644 (file)
@@ -14,7 +14,7 @@
 ** Most of the code in this file may be omitted by defining the
 ** SQLITE_OMIT_VACUUM macro.
 **
-** $Id: vacuum.c,v 1.79 2008/05/21 13:44:14 drh Exp $
+** $Id: vacuum.c,v 1.80 2008/06/17 01:03:26 drh Exp $
 */
 #include "sqliteInt.h"
 #include "vdbeInt.h"
@@ -125,6 +125,18 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
   pTemp = db->aDb[db->nDb-1].pBt;
 
   nRes = sqlite3BtreeGetReserve(pMain);
+
+  /* A VACUUM cannot change the pagesize of an encrypted database. */
+#ifdef SQLITE_HAS_CODEC
+  if( db->nextPagesize ){
+    extern void sqlite3CodecGetKey(sqlite3*, int, void**, int*);
+    int nKey;
+    char *zKey;
+    sqlite3CodecGetKey(db, 0, (void**)&zKey, &nKey);
+    if( nKey ) db->nextPagesize = 0;
+  }
+#endif
+
   if( sqlite3BtreeSetPageSize(pTemp, sqlite3BtreeGetPageSize(pMain), nRes)
    || sqlite3BtreeSetPageSize(pTemp, db->nextPagesize, nRes)
    || db->mallocFailed