From c0dc4dcad95f8d8e95986c61514544b52387408a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 23 Jan 2014 15:10:09 +0000 Subject: dbx_mmap to verify password before checking file git-svn-id: http://svn.miranda-ng.org/main/trunk@7835 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db3x_mmap/src/dbintf.cpp | 17 ++++++++++------- plugins/Db3x_mmap/src/dbintfm.cpp | 6 ++---- plugins/Db3x_mmap/src/dbtool/finaltasks.cpp | 12 ------------ plugins/Db3x_mmap/src/dbtool/initialchecks.cpp | 8 -------- plugins/Db3x_mmap/src/init.cpp | 4 ++-- plugins/DbChecker/src/worker.cpp | 4 ++-- 6 files changed, 16 insertions(+), 35 deletions(-) (limited to 'plugins') diff --git a/plugins/Db3x_mmap/src/dbintf.cpp b/plugins/Db3x_mmap/src/dbintf.cpp index 0efc944518..549f32d357 100644 --- a/plugins/Db3x_mmap/src/dbintf.cpp +++ b/plugins/Db3x_mmap/src/dbintf.cpp @@ -127,13 +127,16 @@ int CDb3Base::Load(bool bSkipInit) m_bReadOnly = false; - hContactDeletedEvent = CreateHookableEvent(ME_DB_CONTACT_DELETED); - hContactAddedEvent = CreateHookableEvent(ME_DB_CONTACT_ADDED); - hSettingChangeEvent = CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED); - - hEventAddedEvent = CreateHookableEvent(ME_DB_EVENT_ADDED); - hEventDeletedEvent = CreateHookableEvent(ME_DB_EVENT_DELETED); - hEventFilterAddedEvent = CreateHookableEvent(ME_DB_EVENT_FILTER_ADD); + // we don't need events in the service mode + if (ServiceExists(MS_DB_SETSAFETYMODE)) { + hContactDeletedEvent = CreateHookableEvent(ME_DB_CONTACT_DELETED); + hContactAddedEvent = CreateHookableEvent(ME_DB_CONTACT_ADDED); + hSettingChangeEvent = CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED); + + hEventAddedEvent = CreateHookableEvent(ME_DB_EVENT_ADDED); + hEventDeletedEvent = CreateHookableEvent(ME_DB_EVENT_DELETED); + hEventFilterAddedEvent = CreateHookableEvent(ME_DB_EVENT_FILTER_ADD); + } } return 0; } diff --git a/plugins/Db3x_mmap/src/dbintfm.cpp b/plugins/Db3x_mmap/src/dbintfm.cpp index 15c52654ac..d917ef300d 100644 --- a/plugins/Db3x_mmap/src/dbintfm.cpp +++ b/plugins/Db3x_mmap/src/dbintfm.cpp @@ -39,10 +39,8 @@ CDb3Mmap::~CDb3Mmap() int CDb3Mmap::Load(bool bSkipInit) { int res = CDb3Base::Load(bSkipInit); - if (!res) { - if (!bSkipInit) - if (InitCrypt()) return 1; - } + if (!res && !bSkipInit) + if (InitCrypt()) return 1; return res; } diff --git a/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp b/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp index a7f9c8ef46..dc1e05463c 100644 --- a/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp +++ b/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp @@ -27,17 +27,5 @@ int CDb3Base::WorkFinalTasks(int firstTime) if (WriteSegment(0, &m_dbHeader, sizeof(m_dbHeader)) == WS_ERROR) return ERROR_WRITE_FAULT; - if (m_hDbFile) { - CloseHandle(m_hDbFile); - m_hDbFile = NULL; - } - if (m_pDbCache) { - UnmapViewOfFile(m_pDbCache); - m_pDbCache = NULL; - } - if (m_hMap) { - CloseHandle(m_hMap); - m_hMap = NULL; - } return ERROR_NO_MORE_ITEMS; } diff --git a/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp b/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp index 2d9dfae04c..4501162263 100644 --- a/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp +++ b/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp @@ -48,14 +48,6 @@ int CDb3Base::WorkInitialChecks(int firstTime) if (res) return res; - m_hMap = CreateFileMapping(m_hDbFile, NULL, cb->bAggressive ? PAGE_WRITECOPY : PAGE_READONLY, 0, 0, NULL); - if (m_hMap) - m_pDbCache = (BYTE*)MapViewOfFile(m_hMap, cb->bAggressive ? FILE_MAP_COPY : FILE_MAP_READ, 0, 0, 0); - else { - cb->pfnAddLogMessage(STATUS_FATAL, TranslateT("Can't create file mapping (%u)"), GetLastError()); - return ERROR_ACCESS_DENIED; - } - if (!m_pDbCache) { cb->pfnAddLogMessage(STATUS_FATAL, TranslateT("Can't create map view of file (%u)"), GetLastError()); return ERROR_ACCESS_DENIED; diff --git a/plugins/Db3x_mmap/src/init.cpp b/plugins/Db3x_mmap/src/init.cpp index 461b64be1d..4938ae9cba 100644 --- a/plugins/Db3x_mmap/src/init.cpp +++ b/plugins/Db3x_mmap/src/init.cpp @@ -89,8 +89,8 @@ static int UnloadDatabase(MIDatabase* db) MIDatabaseChecker* CheckDb(const TCHAR* profile, int *error) { - std::auto_ptr db( new CDb3Mmap(profile)); - if (db->Load(true) != ERROR_SUCCESS) { + std::auto_ptr db(new CDb3Mmap(profile)); + if (db->Load(false) != ERROR_SUCCESS) { *error = EGROKPRF_CANTREAD; return NULL; } diff --git a/plugins/DbChecker/src/worker.cpp b/plugins/DbChecker/src/worker.cpp index 7bd1d692b7..a20dfaef6b 100644 --- a/plugins/DbChecker/src/worker.cpp +++ b/plugins/DbChecker/src/worker.cpp @@ -64,11 +64,11 @@ static void Finalize(time_t& ts) AddToStatus(STATUS_WARNING,TranslateT("Unable to rename original file")); } else if (!opts.bCheckOnly) - if ( !DeleteFile(opts.filename)) + if (!DeleteFile(opts.filename)) AddToStatus(STATUS_WARNING,TranslateT("Unable to delete original file")); if (!opts.bCheckOnly) - if ( !MoveFile(opts.outputFilename,opts.filename)) + if (!MoveFile(opts.outputFilename, opts.filename)) AddToStatus(STATUS_WARNING,TranslateT("Unable to rename output file")); } -- cgit v1.2.3