Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
1f70fc50
Commit
1f70fc50
authored
Mar 27, 2007
by
Rob Shearman
Committed by
Alexandre Julliard
Mar 28, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32: Add tests for the standard marshaler's implementation of IClientSecurity.
parent
d6a435fc
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
105 additions
and
1 deletion
+105
-1
marshal.c
dlls/ole32/tests/marshal.c
+105
-1
No files found.
dlls/ole32/tests/marshal.c
View file @
1f70fc50
...
...
@@ -48,6 +48,14 @@ static const IID IID_IWineTest =
{
0xa1
,
0xa2
,
0x5d
,
0x5a
,
0x36
,
0x54
,
0xd3
,
0xbd
}
};
/* 5201163f-8164-4fd0-a1a2-5d5a3654d3bd */
static
const
IID
IID_IRemUnknown
=
{
0x00000131
,
0x0000
,
0x0000
,
{
0xc0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x46
}
};
#define EXTENTID_WineTest IID_IWineTest
#define CLSID_WineTest IID_IWineTest
...
...
@@ -141,7 +149,9 @@ static HRESULT WINAPI Test_IClassFactory_QueryInterface(
if
(
ppvObj
==
NULL
)
return
E_POINTER
;
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IClassFactory
))
IsEqualGUID
(
riid
,
&
IID_IClassFactory
)
||
/* the only other interface Wine is currently able to marshal (for testing two proxies) */
IsEqualGUID
(
riid
,
&
IID_IRemUnknown
))
{
*
ppvObj
=
(
LPVOID
)
iface
;
IClassFactory_AddRef
(
iface
);
...
...
@@ -2110,6 +2120,99 @@ static void test_handler_marshaling(void)
}
static
void
test_client_security
(
void
)
{
HRESULT
hr
;
IStream
*
pStream
=
NULL
;
IClassFactory
*
pProxy
=
NULL
;
IUnknown
*
pProxy2
=
NULL
;
IUnknown
*
pUnknown1
=
NULL
;
IUnknown
*
pUnknown2
=
NULL
;
IClientSecurity
*
pCliSec
=
NULL
;
IMarshal
*
pMarshal
;
DWORD
tid
;
HANDLE
thread
;
static
const
LARGE_INTEGER
ullZero
;
DWORD
dwAuthnSvc
;
DWORD
dwAuthzSvc
;
OLECHAR
*
pServerPrincName
;
DWORD
dwAuthnLevel
;
DWORD
dwImpLevel
;
void
*
pAuthInfo
;
DWORD
dwCapabilities
;
void
*
pv
;
cLocks
=
0
;
hr
=
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
pStream
);
ok_ole_success
(
hr
,
"CreateStreamOnHGlobal"
);
tid
=
start_host_object
(
pStream
,
&
IID_IClassFactory
,
(
IUnknown
*
)
&
Test_ClassFactory
,
MSHLFLAGS_NORMAL
,
&
thread
);
IStream_Seek
(
pStream
,
ullZero
,
STREAM_SEEK_SET
,
NULL
);
hr
=
CoUnmarshalInterface
(
pStream
,
&
IID_IClassFactory
,
(
void
**
)
&
pProxy
);
ok_ole_success
(
hr
,
"CoUnmarshalInterface"
);
IStream_Release
(
pStream
);
hr
=
IUnknown_QueryInterface
(
pProxy
,
&
IID_IUnknown
,
(
LPVOID
*
)
&
pUnknown1
);
ok_ole_success
(
hr
,
"IUnknown_QueryInterface IID_IUnknown"
);
hr
=
IUnknown_QueryInterface
(
pProxy
,
&
IID_IRemUnknown
,
(
LPVOID
*
)
&
pProxy2
);
ok_ole_success
(
hr
,
"IUnknown_QueryInterface IID_IStream"
);
hr
=
IUnknown_QueryInterface
(
pProxy2
,
&
IID_IUnknown
,
(
LPVOID
*
)
&
pUnknown2
);
ok_ole_success
(
hr
,
"IUnknown_QueryInterface IID_IUnknown"
);
ok
(
pUnknown1
==
pUnknown2
,
"both proxy's IUnknowns should be the same - %p, %p
\n
"
,
pUnknown1
,
pUnknown2
);
hr
=
IUnknown_QueryInterface
(
pProxy
,
&
IID_IMarshal
,
(
LPVOID
*
)
&
pMarshal
);
ok_ole_success
(
hr
,
"IUnknown_QueryInterface IID_IMarshal"
);
hr
=
IUnknown_QueryInterface
(
pProxy
,
&
IID_IClientSecurity
,
(
LPVOID
*
)
&
pCliSec
);
ok_ole_success
(
hr
,
"IUnknown_QueryInterface IID_IClientSecurity"
);
hr
=
IClientSecurity_QueryBlanket
(
pCliSec
,
(
IUnknown
*
)
pProxy
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
todo_wine
ok_ole_success
(
hr
,
"IClientSecurity_QueryBlanket (all NULLs)"
);
hr
=
IClientSecurity_QueryBlanket
(
pCliSec
,
(
IUnknown
*
)
pMarshal
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
todo_wine
ok
(
hr
==
E_NOINTERFACE
,
"IClientSecurity_QueryBlanket with local interface should have returned E_NOINTERFACE instead of 0x%08x
\n
"
,
hr
);
hr
=
IClientSecurity_QueryBlanket
(
pCliSec
,
(
IUnknown
*
)
pProxy
,
&
dwAuthnSvc
,
&
dwAuthzSvc
,
&
pServerPrincName
,
&
dwAuthnLevel
,
&
dwImpLevel
,
&
pAuthInfo
,
&
dwCapabilities
);
todo_wine
ok_ole_success
(
hr
,
"IClientSecurity_QueryBlanket"
);
hr
=
IClientSecurity_SetBlanket
(
pCliSec
,
(
IUnknown
*
)
pProxy
,
dwAuthnSvc
,
dwAuthzSvc
,
pServerPrincName
,
dwAuthnLevel
,
RPC_C_IMP_LEVEL_IMPERSONATE
,
pAuthInfo
,
dwCapabilities
);
todo_wine
ok_ole_success
(
hr
,
"IClientSecurity_SetBlanket"
);
hr
=
IClassFactory_CreateInstance
(
pProxy
,
NULL
,
&
IID_IWineTest
,
&
pv
);
ok
(
hr
==
E_NOINTERFACE
,
"COM call should have succeeded instead of returning 0x%08x
\n
"
,
hr
);
hr
=
IClientSecurity_SetBlanket
(
pCliSec
,
(
IUnknown
*
)
pMarshal
,
dwAuthnSvc
,
dwAuthzSvc
,
pServerPrincName
,
dwAuthnLevel
,
dwImpLevel
,
pAuthInfo
,
dwCapabilities
);
todo_wine
ok
(
hr
==
E_NOINTERFACE
,
"IClientSecurity_SetBlanket with local interface should have returned E_NOINTERFACE instead of 0x%08x
\n
"
,
hr
);
hr
=
IClientSecurity_SetBlanket
(
pCliSec
,
(
IUnknown
*
)
pProxy
,
0xdeadbeef
,
dwAuthzSvc
,
pServerPrincName
,
dwAuthnLevel
,
dwImpLevel
,
pAuthInfo
,
dwCapabilities
);
todo_wine
ok
(
hr
==
E_INVALIDARG
,
"IClientSecurity_SetBlanke with invalid dwAuthnSvc should have returned E_INVALIDARG instead of 0x%08x
\n
"
,
hr
);
CoTaskMemFree
(
pServerPrincName
);
hr
=
IClientSecurity_QueryBlanket
(
pCliSec
,
(
IUnknown
*
)
pUnknown1
,
&
dwAuthnSvc
,
&
dwAuthzSvc
,
&
pServerPrincName
,
&
dwAuthnLevel
,
&
dwImpLevel
,
&
pAuthInfo
,
&
dwCapabilities
);
todo_wine
ok_ole_success
(
hr
,
"IClientSecurity_QueryBlanket(IUnknown)"
);
CoTaskMemFree
(
pServerPrincName
);
IClassFactory_Release
(
pProxy
);
#if 0
/* FIXME: fix stub manager to not depend on the IID of the interface to
* determine whether it is really the rem unknown for the object before
* re-enabling this line */
IUnknown_Release(pProxy2);
#endif
IUnknown_Release
(
pUnknown1
);
IUnknown_Release
(
pUnknown2
);
IMarshal_Release
(
pMarshal
);
IClientSecurity_Release
(
pCliSec
);
end_host_object
(
tid
,
thread
);
}
static
HANDLE
heventShutdown
;
static
void
LockModuleOOP
(
void
)
...
...
@@ -2678,6 +2781,7 @@ START_TEST(marshal)
test_freethreadedmarshaler
();
test_inproc_handler
();
test_handler_marshaling
();
test_client_security
();
test_local_server
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment