2 * winsecur.h: some miscellaneous security-related helper functions,
3 * defined in winsecur.c, that use the advapi32 library. Also
4 * centralises the machinery for dynamically loading that library.
7 #if !defined NO_SECURITY
11 #ifndef WINSECUR_GLOBAL
12 #define WINSECUR_GLOBAL extern
16 * Functions loaded from advapi32.dll.
18 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, BOOL, OpenProcessToken,
19 (HANDLE, DWORD, PHANDLE));
20 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, BOOL, GetTokenInformation,
21 (HANDLE, TOKEN_INFORMATION_CLASS,
22 LPVOID, DWORD, PDWORD));
23 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, BOOL, InitializeSecurityDescriptor,
24 (PSECURITY_DESCRIPTOR, DWORD));
25 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, BOOL, SetSecurityDescriptorOwner,
26 (PSECURITY_DESCRIPTOR, PSID, BOOL));
27 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, DWORD, GetSecurityInfo,
28 (HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
29 PSID *, PSID *, PACL *, PACL *,
30 PSECURITY_DESCRIPTOR *));
31 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, DWORD, SetSecurityInfo,
32 (HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
33 PSID, PSID, PACL, PACL));
34 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL, DWORD, SetEntriesInAclA,
35 (ULONG, PEXPLICIT_ACCESS, PACL, PACL *));
39 * Find the SID describing the current user. The return value (if not
40 * NULL for some error-related reason) is smalloced.
42 PSID get_user_sid(void);
45 * Construct a PSECURITY_DESCRIPTOR of the type used for named pipe
46 * servers, i.e. allowing access only to the current user id and also
47 * only local (i.e. not over SMB) connections.
49 * If this function returns TRUE, then 'psd' and 'acl' will have been
50 * filled in with memory allocated using LocalAlloc (and hence must be
51 * freed later using LocalFree). If it returns FALSE, then instead
52 * 'error' has been filled with a dynamically allocated error message.
54 int make_private_security_descriptor(DWORD permissions,
55 PSECURITY_DESCRIPTOR *psd,
59 int setprocessacl(char *error);