mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Enhancements to the secure_delete pragma to make it easier to use.
FossilOrigin-Name: 2bb38bb96ff6b9fb91dd1cf214041cf113ac5508
This commit is contained in:
23
manifest
23
manifest
@@ -1,8 +1,8 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
Hash: SHA1
|
Hash: SHA1
|
||||||
|
|
||||||
C All\sthe\ssecure-delete\ssetting\sto\sbe\schanged\sat\srun-time\susing\sa\spragma.\nThe\sSQLITE_SECURE_DELETE\scompile-time\soption\sdetermines\sthe\sdefault\ssetting.
|
C Enhancements\sto\sthe\ssecure_delete\spragma\sto\smake\sit\seasier\sto\suse.
|
||||||
D 2010-02-12T18:18:39
|
D 2010-02-12T19:46:27
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
|
F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -106,12 +106,12 @@ F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
|
|||||||
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
|
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
|
||||||
F src/alter.c 92ba938565d7cc6bfe92aad6cc90c00800ff21d3
|
F src/alter.c 92ba938565d7cc6bfe92aad6cc90c00800ff21d3
|
||||||
F src/analyze.c 55155f05ee9ab4ce33b7a4d19c449053f8935200
|
F src/analyze.c 55155f05ee9ab4ce33b7a4d19c449053f8935200
|
||||||
F src/attach.c 0ba38b38252a34bb9721de35514a1d14058a8e49
|
F src/attach.c a6b5e97c84c46c731aad064c413e40e12cb718b7
|
||||||
F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
|
F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
|
||||||
F src/backup.c 744e98359dfc79fed43e8dec911e33e108b06aae
|
F src/backup.c 744e98359dfc79fed43e8dec911e33e108b06aae
|
||||||
F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0
|
F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0
|
||||||
F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
|
F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
|
||||||
F src/btree.c 25078c9bba2ed69f1c929e19fe71659d55511f99
|
F src/btree.c c9ee3c30fbf21ebb4f45c244bd47d7999e6f2704
|
||||||
F src/btree.h 0e193b7e90f1d78b79c79474040e3d66a553a4fa
|
F src/btree.h 0e193b7e90f1d78b79c79474040e3d66a553a4fa
|
||||||
F src/btreeInt.h 71ed5e7f009caf17b7dc304350b3cb64b5970135
|
F src/btreeInt.h 71ed5e7f009caf17b7dc304350b3cb64b5970135
|
||||||
F src/build.c 81412e0f3cabd0cc7a71a1644c46d9ccad9613f5
|
F src/build.c 81412e0f3cabd0cc7a71a1644c46d9ccad9613f5
|
||||||
@@ -159,7 +159,7 @@ F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
|
|||||||
F src/pcache.c 815bcb3cf0e14b23212efd3f4981f667a5fd633e
|
F src/pcache.c 815bcb3cf0e14b23212efd3f4981f667a5fd633e
|
||||||
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
||||||
F src/pcache1.c 2bb2261190b42a348038f5b1c285c8cef415fcc8
|
F src/pcache1.c 2bb2261190b42a348038f5b1c285c8cef415fcc8
|
||||||
F src/pragma.c c0591d6f77be6b281f5cb68031c9aab0a7bf50a4
|
F src/pragma.c 55cfa9daa145075cdb928dfce53e55665d6ad709
|
||||||
F src/prepare.c d4cd38ccfb51f1424d0e61d4878a810b7e1ebb60
|
F src/prepare.c d4cd38ccfb51f1424d0e61d4878a810b7e1ebb60
|
||||||
F src/printf.c 2c2702dc4955394dae554b7c45f45656eb42de7f
|
F src/printf.c 2c2702dc4955394dae554b7c45f45656eb42de7f
|
||||||
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
||||||
@@ -550,6 +550,7 @@ F test/savepoint5.test 0735db177e0ebbaedc39812c8d065075d563c4fd
|
|||||||
F test/savepoint6.test 2df1d093e59e78d688c64eb20e0457aaea7d08f9
|
F test/savepoint6.test 2df1d093e59e78d688c64eb20e0457aaea7d08f9
|
||||||
F test/schema.test 23a2909d2b1f8494d28d355c1254f075b0af8ffc
|
F test/schema.test 23a2909d2b1f8494d28d355c1254f075b0af8ffc
|
||||||
F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5
|
F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5
|
||||||
|
F test/securedel.test 328d2921c0ca49bdd3352e516b0377fc07143254
|
||||||
F test/select1.test f67ca2dfc05df41c7b86eb32ca409b427a5f43b0
|
F test/select1.test f67ca2dfc05df41c7b86eb32ca409b427a5f43b0
|
||||||
F test/select2.test 9735da20ccd41e42bf2b4c19fd939141b591adae
|
F test/select2.test 9735da20ccd41e42bf2b4c19fd939141b591adae
|
||||||
F test/select3.test 2ce595f8fb8e2ac10071d3b4e424cadd4634a054
|
F test/select3.test 2ce595f8fb8e2ac10071d3b4e424cadd4634a054
|
||||||
@@ -789,14 +790,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 14ab536a96f81595ab8c3dcd4b72075f1a827c8b
|
P f72f8a870a0fc98a9f2b564ffafe7946bbce506e
|
||||||
R 8c56002353eb719f638bc73e0f805265
|
R b61a1284585a029b8ec102ac4156fb15
|
||||||
U drh
|
U drh
|
||||||
Z 9e25690ce3b9770e58f6c8fa7d210a05
|
Z d9b19f603d580b3226157728109cbbd5
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
iD8DBQFLdZuDoxKgR168RlERAnGTAKCGoy1G06Shul4IKI+EICeUa82BwACeLCUf
|
iD8DBQFLdbAVoxKgR168RlERAj5YAJ42YouMVbChw0/Wmuc1J2A6U9XZigCeJm/S
|
||||||
+FBQFqONYf4Ztpufoz0uTZE=
|
8JFH6+GHy+lsobZdTvVyj/I=
|
||||||
=Tyh+
|
=Aq2n
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
@@ -1 +1 @@
|
|||||||
f72f8a870a0fc98a9f2b564ffafe7946bbce506e
|
2bb38bb96ff6b9fb91dd1cf214041cf113ac5508
|
@@ -144,6 +144,8 @@ static void attachFunc(
|
|||||||
pPager = sqlite3BtreePager(aNew->pBt);
|
pPager = sqlite3BtreePager(aNew->pBt);
|
||||||
sqlite3PagerLockingMode(pPager, db->dfltLockMode);
|
sqlite3PagerLockingMode(pPager, db->dfltLockMode);
|
||||||
sqlite3PagerJournalMode(pPager, db->dfltJournalMode);
|
sqlite3PagerJournalMode(pPager, db->dfltJournalMode);
|
||||||
|
sqlite3BtreeSecureDelete(aNew->pBt,
|
||||||
|
sqlite3BtreeSecureDelete(db->aDb[0].pBt,-1) );
|
||||||
}
|
}
|
||||||
aNew->zName = sqlite3DbStrDup(db, zName);
|
aNew->zName = sqlite3DbStrDup(db, zName);
|
||||||
aNew->safety_level = 3;
|
aNew->safety_level = 3;
|
||||||
|
@@ -2172,6 +2172,7 @@ int sqlite3BtreeMaxPageCount(Btree *p, int mxPage){
|
|||||||
*/
|
*/
|
||||||
int sqlite3BtreeSecureDelete(Btree *p, int newFlag){
|
int sqlite3BtreeSecureDelete(Btree *p, int newFlag){
|
||||||
int b;
|
int b;
|
||||||
|
if( p==0 ) return 0;
|
||||||
sqlite3BtreeEnter(p);
|
sqlite3BtreeEnter(p);
|
||||||
if( newFlag>=0 ){
|
if( newFlag>=0 ){
|
||||||
p->pBt->secureDelete = (newFlag!=0) ? 1 : 0;
|
p->pBt->secureDelete = (newFlag!=0) ? 1 : 0;
|
||||||
|
@@ -431,6 +431,12 @@ void sqlite3Pragma(
|
|||||||
if( zRight ){
|
if( zRight ){
|
||||||
b = getBoolean(zRight);
|
b = getBoolean(zRight);
|
||||||
}
|
}
|
||||||
|
if( pId2->n==0 && b>=0 ){
|
||||||
|
int ii;
|
||||||
|
for(ii=0; ii<db->nDb; ii++){
|
||||||
|
sqlite3BtreeSecureDelete(db->aDb[ii].pBt, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
b = sqlite3BtreeSecureDelete(pBt, b);
|
b = sqlite3BtreeSecureDelete(pBt, b);
|
||||||
returnSingleInt(pParse, "secure_delete", b);
|
returnSingleInt(pParse, "secure_delete", b);
|
||||||
}else
|
}else
|
||||||
|
73
test/securedel.test
Normal file
73
test/securedel.test
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# 2010 January 12
|
||||||
|
#
|
||||||
|
# The author disclaims copyright to this source code. In place of
|
||||||
|
# a legal notice, here is a blessing:
|
||||||
|
#
|
||||||
|
# May you do good and not evil.
|
||||||
|
# May you find forgiveness for yourself and forgive others.
|
||||||
|
# May you share freely, never taking more than you give.
|
||||||
|
#
|
||||||
|
#*************************************************************************
|
||||||
|
#
|
||||||
|
# Tests for the secure_delete pragma.
|
||||||
|
#
|
||||||
|
|
||||||
|
set testdir [file dirname $argv0]
|
||||||
|
source $testdir/tester.tcl
|
||||||
|
|
||||||
|
unset -nocomplain DEFAULT_SECDEL
|
||||||
|
set DEFAULT_SECDEL 0
|
||||||
|
ifcapable secure_delete {
|
||||||
|
set DEFAULT_SECDEL 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
do_test securedel-1.0 {
|
||||||
|
db eval {PRAGMA secure_delete;}
|
||||||
|
} $DEFAULT_SECDEL
|
||||||
|
|
||||||
|
file delete -force test2.db test2.db-journal
|
||||||
|
do_test securedel-1.1 {
|
||||||
|
db eval {
|
||||||
|
ATTACH 'test2.db' AS db2;
|
||||||
|
PRAGMA main.secure_delete=ON;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} [list 1 $DEFAULT_SECDEL]
|
||||||
|
do_test securedel-1.2 {
|
||||||
|
db eval {
|
||||||
|
PRAGMA main.secure_delete=OFF;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} [list 0 $DEFAULT_SECDEL]
|
||||||
|
do_test securedel-1.3 {
|
||||||
|
db eval {
|
||||||
|
PRAGMA secure_delete=OFF;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} {0 0}
|
||||||
|
do_test securedel-1.4 {
|
||||||
|
breakpoint
|
||||||
|
db eval {
|
||||||
|
PRAGMA secure_delete=ON;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} {1 1}
|
||||||
|
|
||||||
|
do_test securedel-2.1 {
|
||||||
|
db eval {
|
||||||
|
DETACH db2;
|
||||||
|
ATTACH 'test2.db' AS db2;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} 1
|
||||||
|
do_test securedel-2.2 {
|
||||||
|
db eval {
|
||||||
|
DETACH db2;
|
||||||
|
PRAGMA main.secure_delete=OFF;
|
||||||
|
ATTACH 'test2.db' AS db2;
|
||||||
|
PRAGMA db2.secure_delete;
|
||||||
|
}
|
||||||
|
} {0 0}
|
||||||
|
|
||||||
|
finish_test
|
Reference in New Issue
Block a user