summaryrefslogtreecommitdiff
path: root/src/VBox/Main/src-client/HGCM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Main/src-client/HGCM.cpp')
-rw-r--r--src/VBox/Main/src-client/HGCM.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/VBox/Main/src-client/HGCM.cpp b/src/VBox/Main/src-client/HGCM.cpp
index abc74a27..722333ff 100644
--- a/src/VBox/Main/src-client/HGCM.cpp
+++ b/src/VBox/Main/src-client/HGCM.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2007 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -242,7 +242,7 @@ HGCMService::HGCMService ()
#endif
m_hExtension (NULL)
{
- memset (&m_fntable, 0, sizeof (m_fntable));
+ RT_ZERO(m_fntable);
}
@@ -254,7 +254,7 @@ static bool g_fSaveState = false;
*
* @return VBox code
*/
-int HGCMService::loadServiceDLL (void)
+int HGCMService::loadServiceDLL(void)
{
LogFlowFunc(("m_pszSvcLibrary = %s\n", m_pszSvcLibrary));
@@ -264,9 +264,14 @@ int HGCMService::loadServiceDLL (void)
}
RTERRINFOSTATIC ErrInfo;
- RTErrInfoInitStatic (&ErrInfo);
+ RTErrInfoInitStatic(&ErrInfo);
- int rc = SUPR3HardenedLdrLoadAppPriv (m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
+ int rc;
+
+ if (RTPathHasPath(m_pszSvcLibrary))
+ rc = SUPR3HardenedLdrLoadPlugIn(m_pszSvcLibrary, &m_hLdrMod, &ErrInfo.Core);
+ else
+ rc = SUPR3HardenedLdrLoadAppPriv(m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
if (RT_SUCCESS(rc))
{
@@ -274,7 +279,7 @@ int HGCMService::loadServiceDLL (void)
m_pfnLoad = NULL;
- rc = RTLdrGetSymbol (m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
+ rc = RTLdrGetSymbol(m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
if (RT_FAILURE(rc) || !m_pfnLoad)
{
@@ -289,13 +294,13 @@ int HGCMService::loadServiceDLL (void)
if (RT_SUCCESS(rc))
{
- memset (&m_fntable, 0, sizeof (m_fntable));
+ RT_ZERO(m_fntable);
- m_fntable.cbSize = sizeof (m_fntable);
+ m_fntable.cbSize = sizeof(m_fntable);
m_fntable.u32Version = VBOX_HGCM_SVC_VERSION;
m_fntable.pHelpers = &m_svcHelpers;
- rc = m_pfnLoad (&m_fntable);
+ rc = m_pfnLoad(&m_fntable);
LogFlowFunc(("m_pfnLoad rc = %Rrc\n", rc));
@@ -313,7 +318,7 @@ int HGCMService::loadServiceDLL (void)
if (m_fntable.pfnUnload)
{
- m_fntable.pfnUnload (m_fntable.pvService);
+ m_fntable.pfnUnload(m_fntable.pvService);
}
}
}
@@ -328,7 +333,7 @@ int HGCMService::loadServiceDLL (void)
if (RT_FAILURE(rc))
{
- unloadServiceDLL ();
+ unloadServiceDLL();
}
return rc;
@@ -338,14 +343,14 @@ int HGCMService::loadServiceDLL (void)
*
* @return VBox code
*/
-void HGCMService::unloadServiceDLL (void)
+void HGCMService::unloadServiceDLL(void)
{
if (m_hLdrMod)
{
- RTLdrClose (m_hLdrMod);
+ RTLdrClose(m_hLdrMod);
}
- memset (&m_fntable, 0, sizeof (m_fntable));
+ RT_ZERO(m_fntable);
m_pfnLoad = NULL;
m_hLdrMod = NIL_RTLDRMOD;
}
@@ -790,9 +795,9 @@ int HGCMService::instanceCreate (const char *pszServiceLibrary, const char *pszS
/* The maximum length of the thread name, allowed by the RT is 15. */
char szThreadName[16];
- if (!strncmp (pszServiceName, "VBoxShared", 10))
+ if (!strncmp (pszServiceName, RT_STR_TUPLE("VBoxShared")))
RTStrPrintf (szThreadName, sizeof (szThreadName), "Sh%s", pszServiceName + 10);
- else if (!strncmp (pszServiceName, "VBox", 4))
+ else if (!strncmp (pszServiceName, RT_STR_TUPLE("VBox")))
RTStrCopy (szThreadName, sizeof (szThreadName), pszServiceName + 4);
else
RTStrCopy (szThreadName, sizeof (szThreadName), pszServiceName);