microsoft / microsoft/CsWin32

The friendly overload for `AdjustTokenPrivileges()` is inconsistent.

Open
#1,558 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C#
Stars
2.5k
Forks
124
Avg merge
1d 3h
Merged PRs (30d)
9

Description

Actual behavior

The friendly overload for AdjustTokenPrivileges() requires a pointer to TOKEN_PRIVILEGES for NewState, but uses Span<byte> for PreviousState.

internal static unsafe winmdroot.Foundation.BOOL AdjustTokenPrivileges(SafeHandle TokenHandle, winmdroot.Foundation.BOOL DisableAllPrivileges, winmdroot.Security.TOKEN_PRIVILEGES* NewState, Span<byte> PreviousState, out uint ReturnLength)
{
}

Expected behavior

Consistent parameters for each type. Ideally in winmdroot.Security.TOKEN_PRIVILEGES NewState/out winmdroot.Security.TOKEN_PRIVILEGES* PreviousState.

Repro steps

N/A

  1. NativeMethods.txt content:
AdjustTokenPrivileges
  1. NativeMethods.json content (if present):
    N/A

  2. Any of your own code that should be shared?
    N/A

Context
  • CsWin32 version: 0.3.253
  • Win32Metadata version (if explicitly set by project): N/A
  • Target Framework: net472
  • LangVersion (if explicitly set by project): N/A

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the generated declaration from a NativeMethods.txt containing AdjustTokenPrivileges, using the issue's CsWin32 and target framework context. Inspect how the friendly overload is generated and compare the NewState and PreviousState parameter types with the expected consistency; done means the generated signature uses consistent TOKEN_PRIVILEGES representations.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.