MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / win_security_init

Function win_security_init

src/daemon/ipc.c:3656–3776  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3654 } while (0)
3655
3656static bool win_security_init(win_security_t *security) {
3657 memset(security, 0, sizeof(*security));
3658 security->advapi = LoadLibraryW(L"advapi32.dll");
3659 if (!security->advapi) {
3660 return false;
3661 }
3662 RESOLVE_ADVAPI_MEMBER(security, open_process_token, open_process_token_fn, "OpenProcessToken");
3663 RESOLVE_ADVAPI_MEMBER(security, open_thread_token, open_thread_token_fn, "OpenThreadToken");
3664 RESOLVE_ADVAPI_MEMBER(security, get_token_information, get_token_information_fn,
3665 "GetTokenInformation");
3666 RESOLVE_ADVAPI_MEMBER(security, get_length_sid, get_length_sid_fn, "GetLengthSid");
3667 RESOLVE_ADVAPI_MEMBER(security, copy_sid, copy_sid_fn, "CopySid");
3668 RESOLVE_ADVAPI_MEMBER(security, equal_sid, equal_sid_fn, "EqualSid");
3669 RESOLVE_ADVAPI_MEMBER(security, is_valid_sid, is_valid_sid_fn, "IsValidSid");
3670 RESOLVE_ADVAPI_MEMBER(security, is_well_known_sid, is_well_known_sid_fn, "IsWellKnownSid");
3671 RESOLVE_ADVAPI_MEMBER(security, is_valid_acl, is_valid_acl_fn, "IsValidAcl");
3672 RESOLVE_ADVAPI_MEMBER(security, initialize_acl, initialize_acl_fn, "InitializeAcl");
3673 RESOLVE_ADVAPI_MEMBER(security, add_access_allowed_ace, add_access_allowed_ace_fn,
3674 "AddAccessAllowedAce");
3675 RESOLVE_ADVAPI_MEMBER(security, add_access_allowed_ace_ex, add_access_allowed_ace_ex_fn,
3676 "AddAccessAllowedAceEx");
3677 RESOLVE_ADVAPI_MEMBER(security, initialize_security_descriptor,
3678 initialize_security_descriptor_fn, "InitializeSecurityDescriptor");
3679 RESOLVE_ADVAPI_MEMBER(security, set_security_descriptor_dacl, set_security_descriptor_dacl_fn,
3680 "SetSecurityDescriptorDacl");
3681 RESOLVE_ADVAPI_MEMBER(security, set_security_descriptor_owner, set_security_descriptor_owner_fn,
3682 "SetSecurityDescriptorOwner");
3683 RESOLVE_ADVAPI_MEMBER(security, get_acl_information, get_acl_information_fn,
3684 "GetAclInformation");
3685 RESOLVE_ADVAPI_MEMBER(security, get_security_descriptor_control,
3686 get_security_descriptor_control_fn, "GetSecurityDescriptorControl");
3687 RESOLVE_ADVAPI_MEMBER(security, get_ace, get_ace_fn, "GetAce");
3688 RESOLVE_ADVAPI_MEMBER(security, get_security_info, get_security_info_fn, "GetSecurityInfo");
3689 RESOLVE_ADVAPI_MEMBER(security, set_security_info, set_security_info_fn, "SetSecurityInfo");
3690 RESOLVE_ADVAPI_MEMBER(security, impersonate_named_pipe_client, impersonate_named_pipe_client_fn,
3691 "ImpersonateNamedPipeClient");
3692 RESOLVE_ADVAPI_MEMBER(security, revert_to_self, revert_to_self_fn, "RevertToSelf");
3693
3694 HANDLE token = NULL;
3695 if (!security->open_process_token(GetCurrentProcess(), TOKEN_QUERY, &token)) {
3696 win_security_destroy(security);
3697 return false;
3698 }
3699 PSID token_sid = NULL;
3700 void *token_user = win_token_user_query(security, token, &token_sid);
3701 (void)CloseHandle(token);
3702 if (!token_user || !token_sid) {
3703 free(token_user);
3704 win_security_destroy(security);
3705 return false;
3706 }
3707 DWORD sid_length = security->get_length_sid(token_sid);
3708 security->user_sid = malloc(sid_length);
3709 if (sid_length == 0 || !security->user_sid ||
3710 !security->copy_sid(sid_length, security->user_sid, token_sid)) {
3711 free(token_user);
3712 win_security_destroy(security);
3713 return false;

Calls 2

win_security_destroyFunction · 0.85
win_token_user_queryFunction · 0.85

Tested by

no test coverage detected