Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
3879fef2
Commit
3879fef2
authored
Jul 31, 2006
by
Robert Reif
Committed by
Alexandre Julliard
Aug 01, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
advapi32: LsaQueryInformationPolicy update.
Update LsaQueryInformationPolicy to use correct computer name and SID. Add support for PolicyDnsDomainInformation.
parent
a430db9e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
104 additions
and
10 deletions
+104
-10
lsa.c
dlls/advapi32/lsa.c
+104
-10
No files found.
dlls/advapi32/lsa.c
View file @
3879fef2
...
...
@@ -394,10 +394,9 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
{
POLICY_PRIMARY_DOMAIN_INFO
ppdi
;
SID
sid
;
DWORD
padding
[
3
];
};
SID_IDENTIFIER_AUTHORITY
localSidAuthority
=
{
SECURITY_NT_AUTHORITY
};
struct
di
*
xdi
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
*
xdi
));
HKEY
key
;
BOOL
useDefault
=
TRUE
;
...
...
@@ -431,15 +430,111 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
RegCloseKey
(
key
);
}
if
(
useDefault
)
RtlCreateUnicodeStringFromAsciiz
(
&
(
xdi
->
ppdi
.
Name
),
"DOMAIN"
);
{
DWORD
dwSize
=
MAX_COMPUTERNAME_LENGTH
+
1
;
LPWSTR
buf
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
dwSize
*
sizeof
(
WCHAR
));
if
(
GetComputerNameW
(
buf
,
&
dwSize
))
{
xdi
->
ppdi
.
Name
.
Buffer
=
buf
;
xdi
->
ppdi
.
Name
.
Length
=
dwSize
*
sizeof
(
WCHAR
);
}
}
TRACE
(
"setting domain to %s
\n
"
,
debugstr_w
(
xdi
->
ppdi
.
Name
.
Buffer
));
xdi
->
ppdi
.
Sid
=
&
(
xdi
->
sid
);
xdi
->
sid
.
Revision
=
SID_REVISION
;
xdi
->
sid
.
SubAuthorityCount
=
1
;
xdi
->
sid
.
IdentifierAuthority
=
localSidAuthority
;
xdi
->
sid
.
SubAuthority
[
0
]
=
SECURITY_LOCAL_SYSTEM_RID
;
/* read the computer SID from the registry */
if
(
!
ADVAPI_GetComputerSid
(
&
(
xdi
->
sid
)))
{
SID_IDENTIFIER_AUTHORITY
localSidAuthority
=
{
SECURITY_NT_AUTHORITY
};
xdi
->
sid
.
Revision
=
SID_REVISION
;
xdi
->
sid
.
SubAuthorityCount
=
4
;
xdi
->
sid
.
IdentifierAuthority
=
localSidAuthority
;
xdi
->
sid
.
SubAuthority
[
0
]
=
SECURITY_NT_NON_UNIQUE
;
xdi
->
sid
.
SubAuthority
[
1
]
=
0
;
xdi
->
sid
.
SubAuthority
[
2
]
=
0
;
xdi
->
sid
.
SubAuthority
[
3
]
=
0
;
}
TRACE
(
"setting SID to %s
\n
"
,
debugstr_sid
(
&
xdi
->
sid
));
*
Buffer
=
xdi
;
}
break
;
case
PolicyDnsDomainInformation
:
/* 12 (0xc) */
{
struct
di
{
POLICY_DNS_DOMAIN_INFO
pddi
;
SID
sid
;
DWORD
padding
[
3
];
};
struct
di
*
xdi
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
*
xdi
));
HKEY
key
;
BOOL
useDefault
=
TRUE
;
LONG
ret
;
if
((
ret
=
RegOpenKeyExA
(
HKEY_LOCAL_MACHINE
,
"System
\\
CurrentControlSet
\\
Services
\\
VxD
\\
VNETSUP"
,
0
,
KEY_READ
,
&
key
))
==
ERROR_SUCCESS
)
{
DWORD
size
=
0
;
static
const
WCHAR
wg
[]
=
{
'W'
,
'o'
,
'r'
,
'k'
,
'g'
,
'r'
,
'o'
,
'u'
,
'p'
,
0
};
ret
=
RegQueryValueExW
(
key
,
wg
,
NULL
,
NULL
,
NULL
,
&
size
);
if
(
ret
==
ERROR_MORE_DATA
||
ret
==
ERROR_SUCCESS
)
{
xdi
->
pddi
.
Name
.
Buffer
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
size
);
if
((
ret
=
RegQueryValueExW
(
key
,
wg
,
NULL
,
NULL
,
(
LPBYTE
)
xdi
->
pddi
.
Name
.
Buffer
,
&
size
))
==
ERROR_SUCCESS
)
{
xdi
->
pddi
.
Name
.
Length
=
(
USHORT
)
size
;
useDefault
=
FALSE
;
}
else
{
HeapFree
(
GetProcessHeap
(),
0
,
xdi
->
pddi
.
Name
.
Buffer
);
xdi
->
pddi
.
Name
.
Buffer
=
NULL
;
}
}
RegCloseKey
(
key
);
}
if
(
useDefault
)
{
DWORD
dwSize
=
MAX_COMPUTERNAME_LENGTH
+
1
;
LPWSTR
buf
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
dwSize
*
sizeof
(
WCHAR
));
if
(
GetComputerNameW
(
buf
,
&
dwSize
))
{
xdi
->
pddi
.
Name
.
Buffer
=
buf
;
xdi
->
pddi
.
Name
.
Length
=
dwSize
*
sizeof
(
WCHAR
);
}
}
TRACE
(
"setting domain to %s
\n
"
,
debugstr_w
(
xdi
->
pddi
.
Name
.
Buffer
));
xdi
->
pddi
.
Sid
=
&
(
xdi
->
sid
);
/* read the computer SID from the registry */
if
(
!
ADVAPI_GetComputerSid
(
&
(
xdi
->
sid
)))
{
SID_IDENTIFIER_AUTHORITY
localSidAuthority
=
{
SECURITY_NT_AUTHORITY
};
xdi
->
sid
.
Revision
=
SID_REVISION
;
xdi
->
sid
.
SubAuthorityCount
=
4
;
xdi
->
sid
.
IdentifierAuthority
=
localSidAuthority
;
xdi
->
sid
.
SubAuthority
[
0
]
=
SECURITY_NT_NON_UNIQUE
;
xdi
->
sid
.
SubAuthority
[
1
]
=
0
;
xdi
->
sid
.
SubAuthority
[
2
]
=
0
;
xdi
->
sid
.
SubAuthority
[
3
]
=
0
;
}
TRACE
(
"setting SID to %s
\n
"
,
debugstr_sid
(
&
xdi
->
sid
));
*
Buffer
=
xdi
;
}
break
;
...
...
@@ -451,7 +546,6 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
case
PolicyModificationInformation
:
case
PolicyAuditFullSetInformation
:
case
PolicyAuditFullQueryInformation
:
case
PolicyDnsDomainInformation
:
{
FIXME
(
"category not implemented
\n
"
);
return
STATUS_UNSUCCESSFUL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment