ole32: Fix crash when calling CreateStream on read only storage.

This commit is contained in:
Vincent Povirk 2009-05-29 16:30:56 -05:00 committed by Alexandre Julliard
parent 5aab52c977
commit 4a0901fb87
2 changed files with 4 additions and 2 deletions

View File

@ -979,6 +979,10 @@ static HRESULT WINAPI StorageBaseImpl_CreateStream(
(grfMode & STGM_TRANSACTED))
return STG_E_INVALIDFUNCTION;
/* Can't create a stream on read-only storage */
if ( STGM_ACCESS_MODE( This->openFlags ) == STGM_READ )
return STG_E_ACCESSDENIED;
/*
* Check that we're compatible with the parent's storage mode
* if not in transacted mode

View File

@ -1302,13 +1302,11 @@ void test_readonly(void)
ok(hr == S_OK, "should succeed, res=%x\n", hr);
if (SUCCEEDED(hr))
{
#if 0 /* crashes on Wine */
/* CreateStream on read-only storage, name exists */
hr = IStorage_CreateStream( stg2, streamW, STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_READ, 0, 0, &stream );
ok(hr == STG_E_ACCESSDENIED, "should fail, res=%x\n", hr);
if (SUCCEEDED(hr))
IStream_Release(stream);
#endif
/* CreateStream on read-only storage, name does not exist */
hr = IStorage_CreateStream( stg2, storageW, STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_READ, 0, 0, &stream );