diff --git a/src/Kdb3Database.cpp b/src/Kdb3Database.cpp index b69d92e..2e4c23c 100644 --- a/src/Kdb3Database.cpp +++ b/src/Kdb3Database.cpp @@ -1741,9 +1741,8 @@ void KeyTransform::transform(quint8* src, quint8* dst, quint8* KeySeed, int roun KeyTransform* ktRight = new KeyTransform(&src[16], &dst[16], KeySeed, rounds); ktLeft->start(); ktRight->start(); - while (ktLeft->isRunning() || ktRight->isRunning()){ - QThread::msleep(100); - } + ktLeft->wait(); + ktRight->wait(); SHA256::hashBuffer(dst,dst,32); delete ktLeft; delete ktRight; diff --git a/src/lib/SecString.cpp b/src/lib/SecString.cpp index 7af6b71..dfa0fc8 100644 --- a/src/lib/SecString.cpp +++ b/src/lib/SecString.cpp @@ -18,7 +18,10 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ - +#ifdef Q_WS_X11 +#include +#include +#endif using namespace std; CArcFour SecString::RC4; @@ -97,6 +100,17 @@ void SecString::overwrite(QString& str){ void SecString::generateSessionKey(){ CArcFour arc; unsigned char sessionkey[32]; + +#ifdef Q_WS_X11 + +#ifdef PAGESIZE + mlock(sessionkey - sessionkey%PAGESIZE, 32); +#else + mlock(sessionkey, 32); +#endif + +#endif // Q_WS_X11 + randomize(sessionkey,32); RC4.setKey(sessionkey,32); overwrite(sessionkey,32); diff --git a/src/src.pro b/src/src.pro index 0788c99..707f11f 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,5 +1,5 @@ -CONFIG = qt uic resources thread stl warn_off precompile_header +CONFIG = qt uic resources thread stl warn_off QT += xml DEPENDPATH += crypto dialogs export forms import lib translations res @@ -17,6 +17,12 @@ else { CONFIG += release } +# lipo and freebsd cannot handle precompiled headers (yet) +!isEqual(PRECOMPILED,1){ + macx : isEqual(ARCH,UNIVERSAL) : PRECOMPILED = 0 + freebsd-* : PRECOMPILED = 0 +} + win32 : QMAKE_WIN32 = 1 #------------------------------------------------------------------------------- @@ -78,9 +84,6 @@ macx { CONFIG += app_bundle isEqual(ARCH,UNIVERSAL){ CONFIG += x86 ppc - # lipo cannot handle precompiled headers (yet) - CONFIG -= precompile_header - QMAKE_CXXFLAGS += -include keepassx.h } isEqual(ARCH,INTEL): CONFIG += x86 isEqual(ARCH,PPC): CONFIG += ppc @@ -251,12 +254,18 @@ SOURCES += lib/UrlLabel.cpp \ dialogs/AddBookmarkDlg.cpp \ lib/bookmarks.cpp \ dialogs/ManageBookmarksDlg.cpp \ - crypto/aescrypt.c \ - crypto/aeskey.c \ - crypto/aes_modes.c \ - crypto/aestab.c \ - lib/AutoTypeTreeWidget.cpp + crypto/aescrypt.c \ + crypto/aeskey.c \ + crypto/aes_modes.c \ + crypto/aestab.c \ + lib/AutoTypeTreeWidget.cpp -PRECOMPILED_HEADER = keepassx.h +isEqual(PRECOMPILED,0) { + QMAKE_CXXFLAGS += -include keepassx.h +} +else { + CONFIG += precompile_header + PRECOMPILED_HEADER = keepassx.h +} RESOURCES += res/resources.qrc