From dcc0a8d477c65282b458e5ceef316e91c699a409 Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Mon, 10 Jan 2011 23:25:24 +0000 Subject: [PATCH] Delays the linking to the Microsoft Outlook API from compile to run time as much as possible in order to fix a crash on Windows XP without Microsoft Outlook (privately) reported by Damian Minkov. --- lib/native/windows-64/jmsoutlookaddrbook.dll | Bin 0 -> 25600 bytes lib/native/windows/jmsoutlookaddrbook.dll | Bin 0 -> 23552 bytes src/native/addrbook/msoutlook/Makefile | 2 +- src/native/addrbook/msoutlook/MsOutlookMAPI.h | 12 +++ ..._MsOutlookAddrBookContactSourceService.cxx | 100 ++++++++++++++++-- 5 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 lib/native/windows-64/jmsoutlookaddrbook.dll create mode 100644 lib/native/windows/jmsoutlookaddrbook.dll diff --git a/lib/native/windows-64/jmsoutlookaddrbook.dll b/lib/native/windows-64/jmsoutlookaddrbook.dll new file mode 100644 index 0000000000000000000000000000000000000000..3eb9042a9a7cba9545ffd501b89cb9de08e946ef GIT binary patch literal 25600 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 z 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 literal 0 HcmV?d00001 diff --git a/lib/native/windows/jmsoutlookaddrbook.dll b/lib/native/windows/jmsoutlookaddrbook.dll new file mode 100644 index 0000000000000000000000000000000000000000..7a1f48bf977be6bc89fcbf6326cdde7b024e2c72 GIT binary patch literal 23552 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 + +SCODE MsOutlookAddrBook_MAPIAllocateBuffer(ULONG size, LPVOID FAR *buffer); +#define MAPIAllocateBuffer MsOutlookAddrBook_MAPIAllocateBuffer +ULONG MsOutlookAddrBook_MAPIFreeBuffer(LPVOID buffer); +#define MAPIFreeBuffer MsOutlookAddrBook_MAPIFreeBuffer +HRESULT MsOutlookAddrBook_MAPILogonEx + (ULONG_PTR uiParam, + LPSTR profileName, LPSTR password, + FLAGS flags, + LPMAPISESSION FAR *mapiSession); +#define MAPILogonEx MsOutlookAddrBook_MAPILogonEx + #endif /* #ifndef _NET_JAVA_SIP_COMMUNICATOR_PLUGIN_ADDRBOOK_MSOUTLOOK_MSOUTLOOKMAPI_H_ */ diff --git a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx index 14446b0aa..3db6812ad 100644 --- a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx +++ b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx @@ -14,6 +14,14 @@ #include #include +static LPMAPIALLOCATEBUFFER + MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer; +static LPMAPIFREEBUFFER MsOutlookAddrBookContactSourceService_MAPIFreeBuffer; +static LPMAPIINITIALIZE MsOutlookAddrBookContactSourceService_MAPIInitialize; +static LPMAPILOGONEX MsOutlookAddrBookContactSourceService_MAPILogonEx; +static LPMAPIUNINITIALIZE + MsOutlookAddrBookContactSourceService_MAPIUninitialize; + JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIInitialize (JNIEnv *jniEnv, jclass clazz, jlong version, jlong flags) @@ -31,7 +39,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac if (ERROR_SUCCESS == RegOpenKeyEx( HKEY_LOCAL_MACHINE, - _TEXT("Software\\Microsoft\\Office"), + _T("Software\\Microsoft\\Office"), 0, KEY_ENUMERATE_SUB_KEYS, &officeKey)) @@ -67,7 +75,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac continue; str = installRootKeyName + subkeyNameLength; - memcpy(str, _TEXT("\\Outlook\\InstallRoot"), 20 * sizeof(TCHAR)); + memcpy(str, _T("\\Outlook\\InstallRoot"), 20 * sizeof(TCHAR)); *(str + 20) = 0; if ((ERROR_SUCCESS == RegOpenKeyEx( @@ -79,7 +87,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac && (ERROR_SUCCESS == RegQueryValueEx( installRootKey, - _TEXT("Path"), + _T("Path"), NULL, &pathValueType, NULL, &pathValueSize)) @@ -109,7 +117,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac if (ERROR_SUCCESS == RegQueryValueEx( installRootKey, - _TEXT("Path"), + _T("Path"), NULL, NULL, (LPBYTE) pathValue, &pathValueSize)) @@ -128,12 +136,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac fileAttributes = GetFileAttributes(pathValue); if (INVALID_FILE_ATTRIBUTES != fileAttributes) - { - MAPIINIT_0 mapiInit - = { (ULONG) version, (ULONG) flags }; - - hResult = MAPIInitialize(&mapiInit); - } + hResult = S_OK; } } @@ -143,6 +146,53 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac } } + /* If we've determined that we'd like to go on with MAPI, try to load it. */ + if (HR_SUCCEEDED(hResult)) + { + HMODULE lib = LoadLibrary(_T("mapi32.dll")); + + if (lib) + { + MsOutlookAddrBookContactSourceService_MAPIInitialize + = (LPMAPIINITIALIZE) GetProcAddress(lib, "MAPIInitialize"); + MsOutlookAddrBookContactSourceService_MAPIUninitialize + = (LPMAPIUNINITIALIZE) GetProcAddress(lib, "MAPIUninitialize"); + + if (MsOutlookAddrBookContactSourceService_MAPIInitialize + && MsOutlookAddrBookContactSourceService_MAPIUninitialize) + { + MAPIINIT_0 mapiInit = { (ULONG) version, (ULONG) flags }; + + hResult + = MsOutlookAddrBookContactSourceService_MAPIInitialize( + &mapiInit); + if (HR_SUCCEEDED(hResult)) + { + MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer + = (LPMAPIALLOCATEBUFFER) + GetProcAddress(lib, "MAPIAllocateBuffer"); + MsOutlookAddrBookContactSourceService_MAPIFreeBuffer + = (LPMAPIFREEBUFFER) + GetProcAddress(lib, "MAPIFreeBuffer"); + MsOutlookAddrBookContactSourceService_MAPILogonEx + = (LPMAPILOGONEX) GetProcAddress(lib, "MAPILogonEx"); + if (!MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer + || !MsOutlookAddrBookContactSourceService_MAPIFreeBuffer + || !MsOutlookAddrBookContactSourceService_MAPILogonEx) + { + MsOutlookAddrBookContactSourceService_MAPIUninitialize(); + hResult = MAPI_E_NOT_FOUND; + } + } + } + else + hResult = MAPI_E_NOT_FOUND; + if (HR_FAILED(hResult)) + FreeLibrary(lib); + } + } + + /* Report any possible error regardless of where it has come from. */ if (HR_FAILED(hResult)) { MsOutlookMAPIHResultException_throwNew( @@ -156,5 +206,33 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIUninitialize (JNIEnv *jniEnv, jclass clazz) { - MAPIUninitialize(); + MsOutlookAddrBookContactSourceService_MAPIUninitialize(); +} + +SCODE +MsOutlookAddrBook_MAPIAllocateBuffer(ULONG size, LPVOID FAR *buffer) +{ + return + MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer(size, buffer); +} + +ULONG +MsOutlookAddrBook_MAPIFreeBuffer(LPVOID buffer) +{ + return MsOutlookAddrBookContactSourceService_MAPIFreeBuffer(buffer); +} + +HRESULT +MsOutlookAddrBook_MAPILogonEx + (ULONG_PTR uiParam, + LPSTR profileName, LPSTR password, + FLAGS flags, + LPMAPISESSION FAR *mapiSession) +{ + return + MsOutlookAddrBookContactSourceService_MAPILogonEx( + uiParam, + profileName, password, + flags, + mapiSession); }