Fossil SCM
Enable [https://sqlite.org/pragma.html#pragma_secure_delete|secure_delete] when deleting chat messages, so that there are no forensic traces left behind.
Commit
12a120dd378b2a541ac465b725f2d7453a42733b0a052507454841c4264b9d6d
Parent
fb3dabd5c4bf638…
1 file changed
+2
+2
| --- src/chat.c | ||
| +++ src/chat.c | ||
| @@ -255,10 +255,11 @@ | ||
| 255 | 255 | if( rAge>mxDays ){ |
| 256 | 256 | msgid = db_int(0, "SELECT msgid FROM chat" |
| 257 | 257 | " ORDER BY msgid DESC LIMIT 1 OFFSET %d", mxCnt); |
| 258 | 258 | if( msgid>0 ){ |
| 259 | 259 | Stmt s; |
| 260 | + db_multi_exec("PRAGMA secure_delete=ON;"); | |
| 260 | 261 | db_prepare(&s, |
| 261 | 262 | "DELETE FROM chat WHERE mtime<julianday('now')-:mxage" |
| 262 | 263 | " AND msgid<%d", msgid); |
| 263 | 264 | db_bind_double(&s, ":mxage", mxDays); |
| 264 | 265 | db_step(&s); |
| @@ -697,10 +698,11 @@ | ||
| 697 | 698 | mdel = atoi(PD("name","0")); |
| 698 | 699 | zOwner = db_text(0, "SELECT xfrom FROM chat WHERE msgid=%d", mdel); |
| 699 | 700 | if( zOwner==0 ) return; |
| 700 | 701 | if( fossil_strcmp(zOwner, g.zLogin)!=0 && !g.perm.Admin ) return; |
| 701 | 702 | db_multi_exec( |
| 703 | + "PRAGMA secure_delete=ON;\n" | |
| 702 | 704 | "BEGIN;\n" |
| 703 | 705 | "DELETE FROM chat WHERE msgid=%d;\n" |
| 704 | 706 | "INSERT INTO chat(mtime, xfrom, mdel)" |
| 705 | 707 | " VALUES(julianday('now'), %Q, %d);\n" |
| 706 | 708 | "COMMIT;", |
| 707 | 709 |
| --- src/chat.c | |
| +++ src/chat.c | |
| @@ -255,10 +255,11 @@ | |
| 255 | if( rAge>mxDays ){ |
| 256 | msgid = db_int(0, "SELECT msgid FROM chat" |
| 257 | " ORDER BY msgid DESC LIMIT 1 OFFSET %d", mxCnt); |
| 258 | if( msgid>0 ){ |
| 259 | Stmt s; |
| 260 | db_prepare(&s, |
| 261 | "DELETE FROM chat WHERE mtime<julianday('now')-:mxage" |
| 262 | " AND msgid<%d", msgid); |
| 263 | db_bind_double(&s, ":mxage", mxDays); |
| 264 | db_step(&s); |
| @@ -697,10 +698,11 @@ | |
| 697 | mdel = atoi(PD("name","0")); |
| 698 | zOwner = db_text(0, "SELECT xfrom FROM chat WHERE msgid=%d", mdel); |
| 699 | if( zOwner==0 ) return; |
| 700 | if( fossil_strcmp(zOwner, g.zLogin)!=0 && !g.perm.Admin ) return; |
| 701 | db_multi_exec( |
| 702 | "BEGIN;\n" |
| 703 | "DELETE FROM chat WHERE msgid=%d;\n" |
| 704 | "INSERT INTO chat(mtime, xfrom, mdel)" |
| 705 | " VALUES(julianday('now'), %Q, %d);\n" |
| 706 | "COMMIT;", |
| 707 |
| --- src/chat.c | |
| +++ src/chat.c | |
| @@ -255,10 +255,11 @@ | |
| 255 | if( rAge>mxDays ){ |
| 256 | msgid = db_int(0, "SELECT msgid FROM chat" |
| 257 | " ORDER BY msgid DESC LIMIT 1 OFFSET %d", mxCnt); |
| 258 | if( msgid>0 ){ |
| 259 | Stmt s; |
| 260 | db_multi_exec("PRAGMA secure_delete=ON;"); |
| 261 | db_prepare(&s, |
| 262 | "DELETE FROM chat WHERE mtime<julianday('now')-:mxage" |
| 263 | " AND msgid<%d", msgid); |
| 264 | db_bind_double(&s, ":mxage", mxDays); |
| 265 | db_step(&s); |
| @@ -697,10 +698,11 @@ | |
| 698 | mdel = atoi(PD("name","0")); |
| 699 | zOwner = db_text(0, "SELECT xfrom FROM chat WHERE msgid=%d", mdel); |
| 700 | if( zOwner==0 ) return; |
| 701 | if( fossil_strcmp(zOwner, g.zLogin)!=0 && !g.perm.Admin ) return; |
| 702 | db_multi_exec( |
| 703 | "PRAGMA secure_delete=ON;\n" |
| 704 | "BEGIN;\n" |
| 705 | "DELETE FROM chat WHERE msgid=%d;\n" |
| 706 | "INSERT INTO chat(mtime, xfrom, mdel)" |
| 707 | " VALUES(julianday('now'), %Q, %d);\n" |
| 708 | "COMMIT;", |
| 709 |