Skip to content

Commit 0f30e81

Browse files
committed
[NTOS:PS] Annotate the Query/Set related functions with SAL2
- Annotate the functions in query.c file with SAL2 of which they weren't annotated before - Use _Out_writes_bytes_to_opt_ to further clarify the output parameter is being written to it based on the length size provided. This is so the code analyzer understands such a parameter is being written into only the specific amount of bytes.
1 parent f5d44e1 commit 0f30e81

File tree

5 files changed

+39
-28
lines changed

5 files changed

+39
-28
lines changed

ntoskrnl/include/internal/ps.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ PsChangeQuantumTable(
144144
NTSTATUS
145145
NTAPI
146146
PsReferenceProcessFilePointer(
147-
IN PEPROCESS Process,
148-
OUT PFILE_OBJECT *FileObject
147+
_In_ PEPROCESS Process,
148+
_Outptr_ PFILE_OBJECT *FileObject
149149
);
150150

151151
//

ntoskrnl/ps/query.c

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ ULONG PspTraceLevel = 0;
2121

2222
NTSTATUS
2323
NTAPI
24-
PsReferenceProcessFilePointer(IN PEPROCESS Process,
25-
OUT PFILE_OBJECT *FileObject)
24+
PsReferenceProcessFilePointer(
25+
_In_ PEPROCESS Process,
26+
_Outptr_ PFILE_OBJECT *FileObject)
2627
{
2728
PSECTION Section;
2829
PAGED_CODE();
@@ -210,7 +211,8 @@ NTAPI
210211
NtQueryInformationProcess(
211212
_In_ HANDLE ProcessHandle,
212213
_In_ PROCESSINFOCLASS ProcessInformationClass,
213-
_Out_ PVOID ProcessInformation,
214+
_Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength)
215+
PVOID ProcessInformation,
214216
_In_ ULONG ProcessInformationLength,
215217
_Out_opt_ PULONG ReturnLength)
216218
{
@@ -1384,10 +1386,11 @@ NtQueryInformationProcess(
13841386
*/
13851387
NTSTATUS
13861388
NTAPI
1387-
NtSetInformationProcess(IN HANDLE ProcessHandle,
1388-
IN PROCESSINFOCLASS ProcessInformationClass,
1389-
IN PVOID ProcessInformation,
1390-
IN ULONG ProcessInformationLength)
1389+
NtSetInformationProcess(
1390+
_In_ HANDLE ProcessHandle,
1391+
_In_ PROCESSINFOCLASS ProcessInformationClass,
1392+
_In_reads_bytes_(ProcessInformationLength) PVOID ProcessInformation,
1393+
_In_ ULONG ProcessInformationLength)
13911394
{
13921395
PEPROCESS Process;
13931396
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
@@ -2302,10 +2305,11 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
23022305
*/
23032306
NTSTATUS
23042307
NTAPI
2305-
NtSetInformationThread(IN HANDLE ThreadHandle,
2306-
IN THREADINFOCLASS ThreadInformationClass,
2307-
IN PVOID ThreadInformation,
2308-
IN ULONG ThreadInformationLength)
2308+
NtSetInformationThread(
2309+
_In_ HANDLE ThreadHandle,
2310+
_In_ THREADINFOCLASS ThreadInformationClass,
2311+
_In_reads_bytes_(ThreadInformationLength) PVOID ThreadInformation,
2312+
_In_ ULONG ThreadInformationLength)
23092313
{
23102314
PETHREAD Thread;
23112315
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
@@ -2914,11 +2918,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
29142918
*/
29152919
NTSTATUS
29162920
NTAPI
2917-
NtQueryInformationThread(IN HANDLE ThreadHandle,
2918-
IN THREADINFOCLASS ThreadInformationClass,
2919-
OUT PVOID ThreadInformation,
2920-
IN ULONG ThreadInformationLength,
2921-
OUT PULONG ReturnLength OPTIONAL)
2921+
NtQueryInformationThread(
2922+
_In_ HANDLE ThreadHandle,
2923+
_In_ THREADINFOCLASS ThreadInformationClass,
2924+
_Out_writes_bytes_to_opt_(ThreadInformationLength, *ReturnLength)
2925+
PVOID ThreadInformation,
2926+
_In_ ULONG ThreadInformationLength,
2927+
_Out_opt_ PULONG ReturnLength)
29222928
{
29232929
PETHREAD Thread;
29242930
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();

sdk/include/ndk/psfuncs.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,8 @@ NTAPI
527527
NtQueryInformationProcess(
528528
_In_ HANDLE ProcessHandle,
529529
_In_ PROCESSINFOCLASS ProcessInformationClass,
530-
_Out_ PVOID ProcessInformation,
530+
_Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength)
531+
PVOID ProcessInformation,
531532
_In_ ULONG ProcessInformationLength,
532533
_Out_opt_ PULONG ReturnLength
533534
);
@@ -539,7 +540,8 @@ NTAPI
539540
NtQueryInformationThread(
540541
_In_ HANDLE ThreadHandle,
541542
_In_ THREADINFOCLASS ThreadInformationClass,
542-
_Out_ PVOID ThreadInformation,
543+
_Out_writes_bytes_to_opt_(ThreadInformationLength, *ReturnLength)
544+
PVOID ThreadInformation,
543545
_In_ ULONG ThreadInformationLength,
544546
_Out_opt_ PULONG ReturnLength
545547
);
@@ -582,7 +584,7 @@ NTAPI
582584
NtSetInformationProcess(
583585
_In_ HANDLE ProcessHandle,
584586
_In_ PROCESSINFOCLASS ProcessInformationClass,
585-
_In_ PVOID ProcessInformation,
587+
_In_reads_bytes_(ProcessInformationLength) PVOID ProcessInformation,
586588
_In_ ULONG ProcessInformationLength
587589
);
588590

sdk/include/psdk/winternl.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,8 @@ NTAPI
416416
NtQueryInformationProcess(
417417
_In_ HANDLE ProcessHandle,
418418
_In_ PROCESSINFOCLASS ProcessInformationClass,
419-
_Out_ PVOID ProcessInformation,
419+
_Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength)
420+
PVOID ProcessInformation,
420421
_In_ ULONG ProcessInformationLength,
421422
_Out_opt_ PULONG ReturnLength);
422423

@@ -432,7 +433,8 @@ NTAPI
432433
NtQueryInformationThread(
433434
_In_ HANDLE ThreadHandle,
434435
_In_ THREADINFOCLASS ThreadInformationClass,
435-
_Out_ PVOID ThreadInformation,
436+
_Out_writes_bytes_to_opt_(ThreadInformationLength, *ReturnLength)
437+
PVOID ThreadInformation,
436438
_In_ ULONG ThreadInformationLength,
437439
_Out_opt_ PULONG ReturnLength);
438440

sdk/include/xdk/psfuncs.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,12 @@ NTSYSCALLAPI
4646
NTSTATUS
4747
NTAPI
4848
NtQueryInformationProcess(
49-
_In_ HANDLE ProcessHandle,
50-
_In_ PROCESSINFOCLASS ProcessInformationClass,
51-
_Out_ PVOID ProcessInformation,
52-
_In_ ULONG ProcessInformationLength,
53-
_Out_opt_ PULONG ReturnLength);
49+
_In_ HANDLE ProcessHandle,
50+
_In_ PROCESSINFOCLASS ProcessInformationClass,
51+
_Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength)
52+
PVOID ProcessInformation,
53+
_In_ ULONG ProcessInformationLength,
54+
_Out_opt_ PULONG ReturnLength);
5455
$endif (_NTDDK_)
5556
$if (_NTIFS_)
5657

0 commit comments

Comments
 (0)