Skip to content

Commit a7a504a

Browse files
committed
[SDK] Add avrf stop codes and VERIFIER_STOP macro
1 parent 367e487 commit a7a504a

2 files changed

Lines changed: 113 additions & 31 deletions

File tree

sdk/include/reactos/verifier.h

Lines changed: 96 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,103 @@ typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
8484
#define RTL_VRF_DBG_ENTRYPOINT_CALLS 0x20000
8585

8686

87-
// Verifier stop codes
88-
89-
#define APPLICATION_VERIFIER_CORRUPT_HEAP_POINTER 0x0006
90-
#define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
91-
92-
#define APPLICATION_VERIFIER_EXCEPTION_WHILE_VERIFYING_BLOCK_HEADER 0x000B
93-
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_AFTER_FREE 0x000D
94-
#define APPLICATION_VERIFIER_CORRUPTED_INFIX_PATTERN 0x000E
95-
#define APPLICATION_VERIFIER_CORRUPTED_SUFFIX_PATTERN 0x000F
96-
#define APPLICATION_VERIFIER_CORRUPTED_START_STAMP 0x0010
97-
#define APPLICATION_VERIFIER_CORRUPTED_END_STAMP 0x0011
98-
#define APPLICATION_VERIFIER_CORRUPTED_PREFIX_PATTERN 0x0012
9987

100-
101-
VOID NTAPI
88+
// Verifier stop codes
89+
#define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000
90+
#define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000
91+
#define APPLICATION_VERIFIER_NO_BREAK 0x20000000
92+
#define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000
93+
94+
#define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001
95+
#define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002
96+
#define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003
97+
#define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004
98+
#define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005
99+
#define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006
100+
#define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
101+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008
102+
#define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009
103+
#define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A
104+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B
105+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C
106+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D
107+
#define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E
108+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F
109+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010
110+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011
111+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012
112+
#define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013
113+
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014
114+
115+
#define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100
116+
#define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101
117+
#define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102
118+
119+
#define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200
120+
#define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201
121+
#define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202
122+
#define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203
123+
#define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204
124+
#define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205
125+
#define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206
126+
#define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207
127+
#define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208
128+
#define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209
129+
#define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210
130+
#define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211
131+
#define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212
132+
#define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213
133+
#define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214
134+
135+
#define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300
136+
#define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301
137+
#define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302
138+
#define APPLICATION_VERIFIER_NULL_HANDLE 0x0303
139+
#define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304
140+
141+
#define APPLICATION_VERIFIER_COM_ERROR 0x0400
142+
#define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401
143+
#define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402
144+
#define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403
145+
#define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404
146+
#define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405
147+
#define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406
148+
#define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407
149+
#define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408
150+
#define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409
151+
#define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A
152+
#define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B
153+
#define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C
154+
#define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D
155+
#define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E
156+
#define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F
157+
#define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410
158+
159+
#define APPLICATION_VERIFIER_RPC_ERROR 0x0500
160+
161+
#define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600
162+
#define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601
163+
#define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602
164+
#define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603
165+
#define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604
166+
#define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605
167+
#define APPLICATION_VERIFIER_PROBE_NULL 0x0606
168+
#define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607
169+
#define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618
170+
171+
#define VERIFIER_STOP(Code, Msg, Val1, Desc1, Val2, Desc2, Val3, Desc3, Val4, Desc4) \
172+
do { \
173+
RtlApplicationVerifierStop((Code), \
174+
(Msg), \
175+
(Val1), (Desc1), \
176+
(Val2), (Desc2), \
177+
(Val3), (Desc3), \
178+
(Val4), (Desc4)); \
179+
} while (0)
180+
181+
182+
VOID
183+
NTAPI
102184
RtlApplicationVerifierStop(
103185
_In_ ULONG_PTR Code,
104186
_In_ PCSTR Message,

sdk/lib/rtl/heappage.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,67 +1348,67 @@ RtlpDphReportCorruptedBlock(
13481348

13491349
if (ValidationInfo & DPH_VALINFO_CORRUPTED_AFTER_FREE)
13501350
{
1351-
RtlApplicationVerifierStop(
1352-
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_AFTER_FREE, "block corrupted after having been freed",
1351+
VERIFIER_STOP(
1352+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER, "block corrupted after having been freed",
13531353
RtlpDphHeapFromPointer(DphRoot), "Heap handle", Block, "Heap block", (PVOID)Size, "Block size", 0, "");
13541354
}
13551355

13561356
if (ValidationInfo & DPH_VALINFO_ALREADY_FREED)
13571357
{
1358-
RtlApplicationVerifierStop(
1358+
VERIFIER_STOP(
13591359
APPLICATION_VERIFIER_DOUBLE_FREE, "block already freed", RtlpDphHeapFromPointer(DphRoot), "Heap handle",
13601360
Block, "Heap block", Size, "Block size", 0, "");
13611361
}
13621362

13631363
if (ValidationInfo & DPH_VALINFO_BAD_INFIX_PATTERN)
13641364
{
1365-
RtlApplicationVerifierStop(
1366-
APPLICATION_VERIFIER_CORRUPTED_INFIX_PATTERN, "corrupted infix pattern for freed block",
1365+
VERIFIER_STOP(
1366+
APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK, "corrupted infix pattern for freed block",
13671367
RtlpDphHeapFromPointer(DphRoot), "Heap handle", Block, "Heap block", Size, "Block size", 0, "");
13681368
}
13691369

13701370
if (ValidationInfo & DPH_VALINFO_BAD_POINTER)
13711371
{
1372-
RtlApplicationVerifierStop(
1373-
APPLICATION_VERIFIER_CORRUPT_HEAP_POINTER, "corrupted heap pointer or using wrong heap",
1372+
VERIFIER_STOP(
1373+
APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE, "corrupted heap pointer or using wrong heap",
13741374
RtlpDphHeapFromPointer(DphRoot), "Heap handle used", Block, "Heap block", Size, "Block size",
13751375
SafeInfo.Heap, "Actual heap handle");
13761376
}
13771377

13781378
if (ValidationInfo & DPH_VALINFO_BAD_SUFFIX_PATTERN)
13791379
{
1380-
RtlApplicationVerifierStop(
1381-
APPLICATION_VERIFIER_CORRUPTED_SUFFIX_PATTERN, "corrupted suffix pattern", RtlpDphHeapFromPointer(DphRoot),
1380+
VERIFIER_STOP(
1381+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX, "corrupted suffix pattern", RtlpDphHeapFromPointer(DphRoot),
13821382
"Heap handle used", Block, "Heap block", Size, "Block size", 0, "");
13831383
}
13841384

13851385
if (ValidationInfo & DPH_VALINFO_BAD_PREFIX_PATTERN)
13861386
{
1387-
RtlApplicationVerifierStop(
1388-
APPLICATION_VERIFIER_CORRUPTED_PREFIX_PATTERN, "corrupted prefix pattern", RtlpDphHeapFromPointer(DphRoot),
1387+
VERIFIER_STOP(
1388+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX, "corrupted prefix pattern", RtlpDphHeapFromPointer(DphRoot),
13891389
"Heap handle used", Block, "Heap block", Size, "Block size", 0, "");
13901390
}
13911391

13921392
if (ValidationInfo & DPH_VALINFO_BAD_START_STAMP)
13931393
{
1394-
RtlApplicationVerifierStop(
1395-
APPLICATION_VERIFIER_CORRUPTED_START_STAMP, "corrupted start stamp", RtlpDphHeapFromPointer(DphRoot),
1394+
VERIFIER_STOP(
1395+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP, "corrupted start stamp", RtlpDphHeapFromPointer(DphRoot),
13961396
"Heap handle used", Block, "Heap block", Size, "Block size", (PVOID)(ULONG_PTR)SafeInfo.StartStamp,
13971397
"Corrupted start stamp");
13981398
}
13991399

14001400
if (ValidationInfo & DPH_VALINFO_BAD_END_STAMP)
14011401
{
1402-
RtlApplicationVerifierStop(
1403-
APPLICATION_VERIFIER_CORRUPTED_END_STAMP, "corrupted end stamp", RtlpDphHeapFromPointer(DphRoot),
1402+
VERIFIER_STOP(
1403+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP, "corrupted end stamp", RtlpDphHeapFromPointer(DphRoot),
14041404
"Heap handle used", Block, "Heap block", Size, "Block size", (PVOID)(ULONG_PTR)SafeInfo.EndStamp,
14051405
"Corrupted end stamp");
14061406
}
14071407

14081408
if (ValidationInfo & DPH_VALINFO_EXCEPTION)
14091409
{
1410-
RtlApplicationVerifierStop(
1411-
APPLICATION_VERIFIER_EXCEPTION_WHILE_VERIFYING_BLOCK_HEADER, "exception raised while verifying block",
1410+
VERIFIER_STOP(
1411+
APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER, "exception raised while verifying block",
14121412
RtlpDphHeapFromPointer(DphRoot), "Heap handle used", Block, "Heap block", Size, "Block size", 0, "");
14131413
}
14141414
}

0 commit comments

Comments
 (0)