Leaked source code of windows server 2003
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.
|
|
/*++
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
|