windows-nt/Source/XPSP1/NT/windows/appcompat/shims/specific/adobelivemotion.cpp
2020-09-26 16:20:57 +08:00

103 lines
1.8 KiB
C++

/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
AdobeLiveMotion.cpp
Abstract:
This installation has a version problem that is corrected
by the MSI transform but later has a problem with it's custom action
DLL.It calls one of the MSI API's with invalid parameters.
Notes:
This is specific to this app.
History:
05/15/2001 prashkud Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(AdobeLiveMotion)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(MsiGetPropertyA)
APIHOOK_ENUM_ENTRY(MsiGetPropertyW)
APIHOOK_ENUM_END
/*++
Pass valid parameters to the API.
--*/
UINT
APIHOOK(MsiGetPropertyA)(
MSIHANDLE hInstall,
LPCSTR szName,
LPSTR szValueBuf,
DWORD *pchValueBuf)
{
char szTempBuf[] = "";
int len = (*pchValueBuf) ?(int)(*pchValueBuf) : MAX_PATH;
if ((szValueBuf == NULL) || IsBadStringPtrA(szValueBuf,(UINT_PTR)len))
{
// If the string pointer is bad, send our empty string in
szValueBuf = szTempBuf;
*pchValueBuf = 0;
}
return ORIGINAL_API(MsiGetPropertyA)(hInstall,szName,szValueBuf,pchValueBuf);
}
/*++
--*/
UINT
APIHOOK(MsiGetPropertyW)(
MSIHANDLE hInstall,
LPCWSTR szName,
LPWSTR szValueBuf,
DWORD *pchValueBuf)
{
WCHAR szTempBuf[] = L"";
int len = (*pchValueBuf) ?(int)(*pchValueBuf) : MAX_PATH;
if ((szValueBuf == NULL) || IsBadStringPtr(szValueBuf,(UINT_PTR)len))
{
// If the string pointer is bad, send our empty string in
szValueBuf = szTempBuf;
*pchValueBuf = 0;
}
return ORIGINAL_API(MsiGetPropertyW)(hInstall,szName,szValueBuf,pchValueBuf);
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(MSI.DLL, MsiGetPropertyA)
APIHOOK_ENTRY(MSI.DLL, MsiGetPropertyW)
HOOK_END
IMPLEMENT_SHIM_END