Page MenuHomePhorge

D14767.1768169460.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D14767.1768169460.diff

diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h
--- a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h
+++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h
@@ -44,6 +44,13 @@
static void setDatabaseStatusAsWorkable();
+ // Clearing the main database should recreate a new database from scratch and
+ // initialize `connectionManager`.
+ static void clearMainDatabaseSensitiveData();
+ // Clearing the backup database should delete all contents and unset
+ // `connectionManager`.
+ static void clearRestoredDatabaseSensitiveData();
+
public:
static const DatabaseQueryExecutor &getQueryExecutor();
static const DatabaseQueryExecutor &getQueryExecutor(DatabaseIdentifier id);
diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp
--- a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp
+++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp
@@ -73,11 +73,7 @@
return mainQueryExecutor;
}
-void DatabaseManager::clearSensitiveData() {
- CommSecureStore::set(CommSecureStore::userID, "");
- CommSecureStore::set(CommSecureStore::deviceID, "");
- CommSecureStore::set(CommSecureStore::commServicesAccessToken, "");
-
+void DatabaseManager::clearMainDatabaseSensitiveData() {
std::string backupDataKey = DatabaseManager::generateBackupDataKey();
std::string backupLogDataKey = DatabaseManager::generateBackupLogDataKey();
@@ -88,7 +84,7 @@
if (SQLiteUtils::fileExists(sqliteFilePath) &&
std::remove(sqliteFilePath.c_str())) {
std::ostringstream errorStream;
- errorStream << "Failed to delete database file. Details: "
+ errorStream << "Failed to delete main database file. Details: "
<< strerror(errno);
Logger::log(errorStream.str());
throw std::system_error(errno, std::generic_category(), errorStream.str());
@@ -99,6 +95,35 @@
DatabaseManager::getQueryExecutor().migrate();
DatabaseManager::mainConnectionManager->initializeConnection();
+}
+
+void DatabaseManager::clearRestoredDatabaseSensitiveData() {
+ if (!DatabaseManager::restoredConnectionManager) {
+ return;
+ }
+ DatabaseManager::restoredConnectionManager->closeConnection();
+ std::string sqliteFilePath =
+ DatabaseManager::restoredConnectionManager->getSQLiteFilePath();
+
+ if (SQLiteUtils::fileExists(sqliteFilePath) &&
+ std::remove(sqliteFilePath.c_str())) {
+ std::ostringstream errorStream;
+ errorStream << "Failed to delete restored database file. Details: "
+ << strerror(errno);
+ Logger::log(errorStream.str());
+ throw std::system_error(errno, std::generic_category(), errorStream.str());
+ }
+
+ DatabaseManager::restoredConnectionManager.reset();
+}
+
+void DatabaseManager::clearSensitiveData() {
+ CommSecureStore::set(CommSecureStore::userID, "");
+ CommSecureStore::set(CommSecureStore::deviceID, "");
+ CommSecureStore::set(CommSecureStore::commServicesAccessToken, "");
+
+ DatabaseManager::clearMainDatabaseSensitiveData();
+ DatabaseManager::clearRestoredDatabaseSensitiveData();
PlatformSpecificTools::removeBackupDirectory();
CommMMKV::clearSensitiveData();

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 11, 10:11 PM (4 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5920591
Default Alt Text
D14767.1768169460.diff (3 KB)

Event Timeline