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
b07ca015
Commit
b07ca015
authored
Sep 12, 2009
by
Nikolay Sivov
Committed by
Alexandre Julliard
Sep 15, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32/dpa: Separate tests for parameter validation in DPA_LoadStream().
parent
96be0ee8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
123 additions
and
4 deletions
+123
-4
dpa.c
dlls/comctl32/tests/dpa.c
+123
-4
No files found.
dlls/comctl32/tests/dpa.c
View file @
b07ca015
...
@@ -33,6 +33,13 @@
...
@@ -33,6 +33,13 @@
#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
typedef
struct
_STREAMDATA
{
DWORD
dwSize
;
DWORD
dwData2
;
DWORD
dwItems
;
}
STREAMDATA
,
*
PSTREAMDATA
;
static
HDPA
(
WINAPI
*
pDPA_Clone
)(
const
HDPA
,
const
HDPA
);
static
HDPA
(
WINAPI
*
pDPA_Clone
)(
const
HDPA
,
const
HDPA
);
static
HDPA
(
WINAPI
*
pDPA_Create
)(
INT
);
static
HDPA
(
WINAPI
*
pDPA_Create
)(
INT
);
static
HDPA
(
WINAPI
*
pDPA_CreateEx
)(
INT
,
HANDLE
);
static
HDPA
(
WINAPI
*
pDPA_CreateEx
)(
INT
,
HANDLE
);
...
@@ -45,9 +52,9 @@ static INT (WINAPI *pDPA_GetPtr)(const HDPA,INT);
...
@@ -45,9 +52,9 @@ static INT (WINAPI *pDPA_GetPtr)(const HDPA,INT);
static
INT
(
WINAPI
*
pDPA_GetPtrIndex
)(
const
HDPA
,
PVOID
);
static
INT
(
WINAPI
*
pDPA_GetPtrIndex
)(
const
HDPA
,
PVOID
);
static
BOOL
(
WINAPI
*
pDPA_Grow
)(
HDPA
,
INT
);
static
BOOL
(
WINAPI
*
pDPA_Grow
)(
HDPA
,
INT
);
static
INT
(
WINAPI
*
pDPA_InsertPtr
)(
const
HDPA
,
INT
,
PVOID
);
static
INT
(
WINAPI
*
pDPA_InsertPtr
)(
const
HDPA
,
INT
,
PVOID
);
static
HRESULT
(
WINAPI
*
pDPA_LoadStream
)(
HDPA
*
,
PFNDPASTREAM
,
IStream
*
,
LP
ARAM
);
static
HRESULT
(
WINAPI
*
pDPA_LoadStream
)(
HDPA
*
,
PFNDPASTREAM
,
IStream
*
,
LP
VOID
);
static
BOOL
(
WINAPI
*
pDPA_Merge
)(
const
HDPA
,
const
HDPA
,
DWORD
,
PFNDPACOMPARE
,
PFNDPAMERGE
,
LPARAM
);
static
BOOL
(
WINAPI
*
pDPA_Merge
)(
const
HDPA
,
const
HDPA
,
DWORD
,
PFNDPACOMPARE
,
PFNDPAMERGE
,
LPARAM
);
static
HRESULT
(
WINAPI
*
pDPA_SaveStream
)(
HDPA
,
PFNDPASTREAM
,
IStream
*
,
LP
ARAM
);
static
HRESULT
(
WINAPI
*
pDPA_SaveStream
)(
HDPA
,
PFNDPASTREAM
,
IStream
*
,
LP
VOID
);
static
INT
(
WINAPI
*
pDPA_Search
)(
HDPA
,
PVOID
,
INT
,
PFNDPACOMPARE
,
LPARAM
,
UINT
);
static
INT
(
WINAPI
*
pDPA_Search
)(
HDPA
,
PVOID
,
INT
,
PFNDPACOMPARE
,
LPARAM
,
UINT
);
static
BOOL
(
WINAPI
*
pDPA_SetPtr
)(
const
HDPA
,
INT
,
PVOID
);
static
BOOL
(
WINAPI
*
pDPA_SetPtr
)(
const
HDPA
,
INT
,
PVOID
);
static
BOOL
(
WINAPI
*
pDPA_Sort
)(
const
HDPA
,
PFNDPACOMPARE
,
LPARAM
);
static
BOOL
(
WINAPI
*
pDPA_Sort
)(
const
HDPA
,
PFNDPACOMPARE
,
LPARAM
);
...
@@ -525,6 +532,117 @@ static void test_DPA_DestroyCallback(void)
...
@@ -525,6 +532,117 @@ static void test_DPA_DestroyCallback(void)
ok
(
nEnum
==
3
,
"nEnum=%d
\n
"
,
nEnum
);
ok
(
nEnum
==
3
,
"nEnum=%d
\n
"
,
nEnum
);
}
}
static
void
test_DPA_LoadStream
(
void
)
{
static
const
WCHAR
szStg
[]
=
{
'S'
,
't'
,
'g'
,
0
};
IStorage
*
pStg
=
NULL
;
IStream
*
pStm
=
NULL
;
LARGE_INTEGER
li
;
ULARGE_INTEGER
uli
;
DWORD
dwMode
;
HRESULT
hRes
;
STREAMDATA
header
;
ULONG
written
,
ret
;
HDPA
dpa
;
hRes
=
CoInitialize
(
NULL
);
if
(
hRes
!=
S_OK
)
{
ok
(
0
,
"hResult: %d
\n
"
,
hRes
);
return
;
}
dwMode
=
STGM_DIRECT
|
STGM_CREATE
|
STGM_READWRITE
|
STGM_SHARE_EXCLUSIVE
;
hRes
=
StgCreateDocfile
(
NULL
,
dwMode
|
STGM_DELETEONRELEASE
,
0
,
&
pStg
);
expect
(
S_OK
,
hRes
);
hRes
=
IStorage_CreateStream
(
pStg
,
szStg
,
dwMode
,
0
,
0
,
&
pStm
);
expect
(
S_OK
,
hRes
);
/* write less than header size */
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
memset
(
&
header
,
0
,
sizeof
(
header
));
written
=
0
;
uli
.
QuadPart
=
sizeof
(
header
)
-
1
;
hRes
=
IStream_SetSize
(
pStm
,
uli
);
expect
(
S_OK
,
hRes
);
hRes
=
IStream_Write
(
pStm
,
&
header
,
sizeof
(
header
)
-
1
,
&
written
);
expect
(
S_OK
,
hRes
);
written
-=
sizeof
(
header
)
-
1
;
expect
(
0
,
written
);
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
hRes
=
pDPA_LoadStream
(
&
dpa
,
CB_Load
,
pStm
,
NULL
);
expect
(
E_FAIL
,
hRes
);
/* check stream position after header read failed */
li
.
QuadPart
=
0
;
uli
.
QuadPart
=
1
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_CUR
,
&
uli
);
expect
(
S_OK
,
hRes
);
todo_wine
ok
(
uli
.
QuadPart
==
0
,
"Expected to position reset
\n
"
);
/* write valid header for empty DPA */
header
.
dwSize
=
sizeof
(
header
);
header
.
dwData2
=
1
;
header
.
dwItems
=
0
;
written
=
0
;
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
uli
.
QuadPart
=
sizeof
(
header
);
hRes
=
IStream_SetSize
(
pStm
,
uli
);
expect
(
S_OK
,
hRes
);
hRes
=
IStream_Write
(
pStm
,
&
header
,
sizeof
(
header
),
&
written
);
expect
(
S_OK
,
hRes
);
written
-=
sizeof
(
header
);
expect
(
0
,
written
);
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
hRes
=
pDPA_LoadStream
(
&
dpa
,
CB_Load
,
pStm
,
NULL
);
todo_wine
expect
(
S_OK
,
hRes
);
/* try with altered dwData2 field */
header
.
dwSize
=
sizeof
(
header
);
header
.
dwData2
=
2
;
header
.
dwItems
=
0
;
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
hRes
=
IStream_Write
(
pStm
,
&
header
,
sizeof
(
header
),
&
written
);
expect
(
S_OK
,
hRes
);
written
-=
sizeof
(
header
);
expect
(
0
,
written
);
li
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
li
,
STREAM_SEEK_SET
,
NULL
);
expect
(
S_OK
,
hRes
);
hRes
=
pDPA_LoadStream
(
&
dpa
,
CB_Load
,
pStm
,
(
void
*
)
0xdeadbeef
);
todo_wine
expect
(
E_FAIL
,
hRes
);
ret
=
IStream_Release
(
pStm
);
ok
(
!
ret
,
"ret=%d
\n
"
,
ret
);
ret
=
IStorage_Release
(
pStg
);
ok
(
!
ret
,
"ret=%d
\n
"
,
ret
);
CoUninitialize
();
}
static
void
test_dpa_stream
(
void
)
static
void
test_dpa_stream
(
void
)
{
{
HDPA
dpa
;
HDPA
dpa
;
...
@@ -566,14 +684,14 @@ static void test_dpa_stream(void)
...
@@ -566,14 +684,14 @@ static void test_dpa_stream(void)
hRes
=
IStorage_CreateStream
(
pStg
,
szStg
,
dwMode
,
0
,
0
,
&
pStm
);
hRes
=
IStorage_CreateStream
(
pStg
,
szStg
,
dwMode
,
0
,
0
,
&
pStm
);
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
hRes
=
pDPA_SaveStream
(
dpa
,
CB_Save
,
pStm
,
0xdeadbeef
);
hRes
=
pDPA_SaveStream
(
dpa
,
CB_Save
,
pStm
,
(
void
*
)
0xdeadbeef
);
todo_wine
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
todo_wine
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
pDPA_Destroy
(
dpa
);
pDPA_Destroy
(
dpa
);
liZero
.
QuadPart
=
0
;
liZero
.
QuadPart
=
0
;
hRes
=
IStream_Seek
(
pStm
,
liZero
,
STREAM_SEEK_SET
,
NULL
);
hRes
=
IStream_Seek
(
pStm
,
liZero
,
STREAM_SEEK_SET
,
NULL
);
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
hRes
=
pDPA_LoadStream
(
&
dpa
,
CB_Load
,
pStm
,
0xdeadbeef
);
hRes
=
pDPA_LoadStream
(
&
dpa
,
CB_Load
,
pStm
,
(
void
*
)
0xdeadbeef
);
todo_wine
todo_wine
{
{
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
ok
(
hRes
==
S_OK
,
"hRes=0x%x
\n
"
,
hRes
);
...
@@ -607,5 +725,6 @@ START_TEST(dpa)
...
@@ -607,5 +725,6 @@ START_TEST(dpa)
test_DPA_Merge
();
test_DPA_Merge
();
test_DPA_EnumCallback
();
test_DPA_EnumCallback
();
test_DPA_DestroyCallback
();
test_DPA_DestroyCallback
();
test_DPA_LoadStream
();
test_dpa_stream
();
test_dpa_stream
();
}
}
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