mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
1.8 KiB
102 lines
1.8 KiB
/*++
|
|
|
|
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
|
|
|