ReactOS 0.4.16-dev-2293-g4d8327b
NtUserCreateAcceleratorTable.c File Reference
#include "../win32nt.h"
#include <pseh/pseh2.h>
Include dependency graph for NtUserCreateAcceleratorTable.c:

Go to the source code of this file.

Macros

#define MIN_VALID_NUMBER   1
 
#define MAX_VALID_NUMBER   32767
 

Functions

 START_TEST (NtUserCreateAcceleratorTable)
 

Macro Definition Documentation

◆ MAX_VALID_NUMBER

#define MAX_VALID_NUMBER   32767

Definition at line 12 of file NtUserCreateAcceleratorTable.c.

◆ MIN_VALID_NUMBER

#define MIN_VALID_NUMBER   1

Definition at line 11 of file NtUserCreateAcceleratorTable.c.

Function Documentation

◆ START_TEST()

START_TEST ( NtUserCreateAcceleratorTable  )

Definition at line 14 of file NtUserCreateAcceleratorTable.c.

15{
16 HACCEL hAccel = NULL;
17 ACCEL Entries[5] = {0};
18 ULONG EntriesCount = 0x80000005;
19 BOOL bCrashed = FALSE;
20 LPACCEL pEntries;
21
22 /* Try heap overflow */
23 SetLastError(0xdeadbeef);
25 {
27 }
29 {
30 bCrashed = TRUE;
31 }
33
34 ok_long(GetLastError(), 0xdeadbeef);
35 ok_bool_false(bCrashed, "bCrashed");
37
38 /* Try NULL Entries argument */
39 SetLastError(0xdeadbeef);
40 bCrashed = FALSE;
41 hAccel = NULL;
43 {
45 }
47 {
48 bCrashed = TRUE;
49 }
51
52 ok_long(GetLastError(), 0xdeadbeef);
53 ok_bool_false(bCrashed, "bCrashed");
55
56 /* Try invalid Entries argument */
57 SetLastError(0xdeadbeef);
58 bCrashed = FALSE;
59 hAccel = NULL;
61 {
63 }
65 {
66 bCrashed = TRUE;
67 }
69
71 ok_bool_false(bCrashed, "bCrashed");
73
74 /* Try EntriesCount = 0 */
75 SetLastError(0xdeadbeef);
76 bCrashed = FALSE;
77 hAccel = NULL;
79 {
81 }
83 {
84 bCrashed = TRUE;
85 }
87
88 ok_long(GetLastError(), 0xdeadbeef);
89 ok_bool_false(bCrashed, "bCrashed");
91
92 /* Try minimum */
93 SetLastError(0xdeadbeef);
94 bCrashed = FALSE;
95 hAccel = NULL;
97 {
99 }
101 {
102 bCrashed = TRUE;
103 }
104 _SEH2_END;
105
106 ok_long(GetLastError(), 0xdeadbeef);
107 ok_bool_false(bCrashed, "bCrashed");
108 ok(hAccel != NULL, "hAccel is NULL\n");
109
110 if (hAccel != NULL)
112
113 /* Try correct parameters */
114 SetLastError(0xdeadbeef);
115 bCrashed = FALSE;
116 hAccel = NULL;
118 {
120 }
122 {
123 bCrashed = TRUE;
124 }
125 _SEH2_END;
126
127 ok_long(GetLastError(), 0xdeadbeef);
128 ok_bool_false(bCrashed, "bCrashed");
129 ok(hAccel != NULL, "hAccel is NULL\n");
130
131 if (hAccel != NULL)
133
134 /* Try maximum */
135 pEntries = HeapAlloc(GetProcessHeap(), 0, MAX_VALID_NUMBER * sizeof(*pEntries));
136 if (pEntries == NULL)
137 {
138 skip("pEntries is NULL\n");
139 }
140 else
141 {
142 SetLastError(0xdeadbeef);
143 bCrashed = FALSE;
144 hAccel = NULL;
146 {
148 }
150 {
151 bCrashed = TRUE;
152 }
153 _SEH2_END;
154
155 ok_long(GetLastError(), 0xdeadbeef);
156 ok_bool_false(bCrashed, "bCrashed");
157 ok(hAccel != NULL, "hAccel is NULL\n");
158
159 if (hAccel != NULL)
161
162 HeapFree(GetProcessHeap(), 0, pEntries);
163 }
164
165 /* Try maximum +1 */
166 pEntries = HeapAlloc(GetProcessHeap(), 0, (MAX_VALID_NUMBER + 1) * sizeof(*pEntries));
167 if (pEntries == NULL)
168 {
169 skip("pEntries is NULL\n");
170 }
171 else
172 {
173 SetLastError(0xdeadbeef);
174 bCrashed = FALSE;
175 hAccel = NULL;
177 {
179 }
181 {
182 bCrashed = TRUE;
183 }
184 _SEH2_END;
185
186 ok_long(GetLastError(), 0xdeadbeef);
187 ok_bool_false(bCrashed, "bCrashed");
188 ok(hAccel != NULL, "hAccel is NULL\n");
189
190 if (hAccel != NULL)
192
193 HeapFree(GetProcessHeap(), 0, pEntries);
194 }
195}
#define MAX_VALID_NUMBER
#define MIN_VALID_NUMBER
#define ok_bool_false(value, desc)
Definition: apitest.h:136
#define ok_long(expression, result)
Definition: atltest.h:133
#define ok_hdl
Definition: atltest.h:136
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcessHeap()
Definition: compat.h:736
#define SetLastError(x)
Definition: compat.h:752
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
unsigned int BOOL
Definition: ntddk_ex.h:94
HACCEL NTAPI NtUserCreateAcceleratorTable(LPACCEL Entries, ULONG EntriesCount)
Definition: accelerator.c:225
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
HACCEL hAccel
Definition: main.c:47
static const ENTRY Entries[]
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:82
#define _SEH2_END
Definition: pseh2_64.h:171
#define _SEH2_TRY
Definition: pseh2_64.h:71
#define _countof(array)
Definition: sndvol32.h:70
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define ERROR_NOACCESS
Definition: winerror.h:902
BOOL WINAPI DestroyAcceleratorTable(_In_ HACCEL)