зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1188439 - Fixed GMPLoader.cpp compilation with sandbox disabled. r=cpearce
This commit is contained in:
Родитель
1febc8154e
Коммит
403c515868
|
@ -14,12 +14,14 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#if defined(XP_WIN) && defined(MOZ_SANDBOX)
|
#ifdef XP_WIN
|
||||||
#include "mozilla/Scoped.h"
|
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
|
#ifdef MOZ_SANDBOX
|
||||||
|
#include "mozilla/Scoped.h"
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HASH_NODE_ID_WITH_DEVICE_ID)
|
#if defined(HASH_NODE_ID_WITH_DEVICE_ID)
|
||||||
// In order to provide EME plugins with a "device binding" capability,
|
// In order to provide EME plugins with a "device binding" capability,
|
||||||
|
@ -196,11 +198,7 @@ GMPLoaderImpl::Load(const char* aUTF8LibPath,
|
||||||
nodeId = std::string(aOriginSalt, aOriginSalt + aOriginSaltLen);
|
nodeId = std::string(aOriginSalt, aOriginSalt + aOriginSaltLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(XP_WIN) && defined(MOZ_SANDBOX)
|
#ifdef XP_WIN
|
||||||
// If the GMP DLL is a side-by-side assembly with static imports then the DLL
|
|
||||||
// loader will attempt to create an activation context which will fail because
|
|
||||||
// of the sandbox. If we create an activation context before we start the
|
|
||||||
// sandbox then this one will get picked up by the DLL loader.
|
|
||||||
int pathLen = MultiByteToWideChar(CP_UTF8, 0, aUTF8LibPath, -1, nullptr, 0);
|
int pathLen = MultiByteToWideChar(CP_UTF8, 0, aUTF8LibPath, -1, nullptr, 0);
|
||||||
if (pathLen == 0) {
|
if (pathLen == 0) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -211,11 +209,17 @@ GMPLoaderImpl::Load(const char* aUTF8LibPath,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MOZ_SANDBOX
|
||||||
|
// If the GMP DLL is a side-by-side assembly with static imports then the DLL
|
||||||
|
// loader will attempt to create an activation context which will fail because
|
||||||
|
// of the sandbox. If we create an activation context before we start the
|
||||||
|
// sandbox then this one will get picked up by the DLL loader.
|
||||||
ACTCTX actCtx = { sizeof(actCtx) };
|
ACTCTX actCtx = { sizeof(actCtx) };
|
||||||
actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
|
actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
|
||||||
actCtx.lpSource = widePath;
|
actCtx.lpSource = widePath;
|
||||||
actCtx.lpResourceName = ISOLATIONAWARE_MANIFEST_RESOURCE_ID;
|
actCtx.lpResourceName = ISOLATIONAWARE_MANIFEST_RESOURCE_ID;
|
||||||
ScopedActCtxHandle actCtxHandle(CreateActCtx(&actCtx));
|
ScopedActCtxHandle actCtxHandle(CreateActCtx(&actCtx));
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Start the sandbox now that we've generated the device bound node id.
|
// Start the sandbox now that we've generated the device bound node id.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче