The Samba-Bugzilla – Attachment 4357 Details for
Bug 4888
ADUC: Missing computer informations
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
First version of a patch
compInfo.patch (text/plain), 161.98 KB, created by
Matthias Dieter Wallnöfer
on 2009-06-26 09:26:40 UTC
(
hide
)
Description:
First version of a patch
Filename:
MIME Type:
Creator:
Matthias Dieter Wallnöfer
Created:
2009-06-26 09:26:40 UTC
Size:
161.98 KB
patch
obsolete
>diff --git a/librpc/gen_ndr/cli_netlogon.c b/librpc/gen_ndr/cli_netlogon.c >index d3efab6..185144f 100644 >--- a/librpc/gen_ndr/cli_netlogon.c >+++ b/librpc/gen_ndr/cli_netlogon.c >@@ -58,8 +58,8 @@ NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >- const char *workstation /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, >+ const char *workstation /* [in] [ref,charset(UTF16)] */, > struct netr_UasLogoffInfo *info /* [out] [ref] */, > WERROR *werror) > { >@@ -215,7 +215,7 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */) > { >@@ -259,9 +259,9 @@ NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */) > { >@@ -307,9 +307,9 @@ NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *new_password /* [in] [ref] */) >@@ -356,8 +356,8 @@ NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -410,8 +410,8 @@ NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -465,7 +465,7 @@ NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *logon_server /* [in] [unique,charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator credential /* [in] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > struct netr_UAS_INFO_0 uas /* [in] */, >@@ -526,7 +526,7 @@ NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *logon_server /* [in] [unique,charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator credential /* [in] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > uint32_t reference /* [in] */, >@@ -587,7 +587,7 @@ NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, > const char *domainname /* [in] [unique,charset(UTF16)] */, > const char **dcname /* [out] [ref,charset(UTF16)] */, > WERROR *werror) >@@ -782,9 +782,9 @@ NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */, > uint32_t *negotiate_flags /* [in,out] [ref] */) >@@ -832,8 +832,8 @@ NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -888,8 +888,8 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > struct netr_ChangeLogEntry change_log_entry /* [in] [subcontext_size(change_log_entry_size),subcontext(4)] */, >@@ -1088,7 +1088,7 @@ NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_LogonGetCapabilities(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *server_name /* [in] [charset(UTF16)] */, >+ const char *server_name /* [in] [ref,charset(UTF16)] */, > const char *computer_name /* [in] [unique,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, >@@ -1308,9 +1308,9 @@ NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */, > uint32_t *negotiate_flags /* [in,out] [ref] */, >@@ -1458,12 +1458,12 @@ NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, > > NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *server_name /* [in] [charset(UTF16)] */, >+ const char *server_name /* [in] [ref,charset(UTF16)] */, > const char *computer_name /* [in] [unique,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > uint32_t level /* [in] */, >- union netr_DomainQuery query /* [in] [switch_is(level)] */, >+ union netr_WorkstationInfo *query /* [in] [ref,switch_is(level)] */, > union netr_DomainInfo *info /* [out] [ref,switch_is(level)] */) > { > struct netr_LogonGetDomainInfo r; >@@ -1510,9 +1510,9 @@ NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct netr_CryptPassword *new_password /* [in] [ref] */) >@@ -1560,9 +1560,9 @@ NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerPasswordGet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *password /* [out] [ref] */, >@@ -2093,9 +2093,9 @@ NTSTATUS rpccli_netr_DsrDeregisterDNSHostRecords(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerTrustPasswordsGet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *password /* [out] [ref] */, >diff --git a/librpc/gen_ndr/cli_netlogon.h b/librpc/gen_ndr/cli_netlogon.h >index ffb877e..74ea7a2 100644 >--- a/librpc/gen_ndr/cli_netlogon.h >+++ b/librpc/gen_ndr/cli_netlogon.h >@@ -11,8 +11,8 @@ NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >- const char *workstation /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, >+ const char *workstation /* [in] [ref,charset(UTF16)] */, > struct netr_UasLogoffInfo *info /* [out] [ref] */, > WERROR *werror); > NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, >@@ -37,30 +37,30 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */); > NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */); > NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *new_password /* [in] [ref] */); > NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -69,8 +69,8 @@ NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, > uint32_t preferredmaximumlength /* [in] */); > NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -80,7 +80,7 @@ NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *logon_server /* [in] [unique,charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator credential /* [in] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > struct netr_UAS_INFO_0 uas /* [in] */, >@@ -94,7 +94,7 @@ NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *logon_server /* [in] [unique,charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator credential /* [in] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > uint32_t reference /* [in] */, >@@ -107,7 +107,7 @@ NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, > struct netr_UAS_INFO_0 *recordid /* [in,out] [ref] */); > NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, > const char *domainname /* [in] [unique,charset(UTF16)] */, > const char **dcname /* [out] [ref,charset(UTF16)] */, > WERROR *werror); >@@ -135,16 +135,16 @@ NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */, > uint32_t *negotiate_flags /* [in,out] [ref] */); > NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > enum netr_SamDatabaseID database_id /* [in] */, >@@ -154,8 +154,8 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, > uint32_t preferredmaximumlength /* [in] */); > NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *logon_server /* [in] [charset(UTF16)] */, >- const char *computername /* [in] [charset(UTF16)] */, >+ const char *logon_server /* [in] [ref,charset(UTF16)] */, >+ const char *computername /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > struct netr_ChangeLogEntry change_log_entry /* [in] [subcontext_size(change_log_entry_size),subcontext(4)] */, >@@ -185,7 +185,7 @@ NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, > WERROR *werror); > NTSTATUS rpccli_netr_LogonGetCapabilities(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *server_name /* [in] [charset(UTF16)] */, >+ const char *server_name /* [in] [ref,charset(UTF16)] */, > const char *computer_name /* [in] [unique,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, >@@ -209,9 +209,9 @@ NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Credential *credentials /* [in] [ref] */, > struct netr_Credential *return_credentials /* [out] [ref] */, > uint32_t *negotiate_flags /* [in,out] [ref] */, >@@ -232,28 +232,28 @@ NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, > WERROR *werror); > NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, >- const char *server_name /* [in] [charset(UTF16)] */, >+ const char *server_name /* [in] [ref,charset(UTF16)] */, > const char *computer_name /* [in] [unique,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [in,out] [ref] */, > uint32_t level /* [in] */, >- union netr_DomainQuery query /* [in] [switch_is(level)] */, >+ union netr_WorkstationInfo *query /* [in] [ref,switch_is(level)] */, > union netr_DomainInfo *info /* [out] [ref,switch_is(level)] */); > NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct netr_CryptPassword *new_password /* [in] [ref] */); > NTSTATUS rpccli_netr_ServerPasswordGet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *password /* [out] [ref] */, >@@ -326,9 +326,9 @@ NTSTATUS rpccli_netr_DsrDeregisterDNSHostRecords(struct rpc_pipe_client *cli, > NTSTATUS rpccli_netr_ServerTrustPasswordsGet(struct rpc_pipe_client *cli, > TALLOC_CTX *mem_ctx, > const char *server_name /* [in] [unique,charset(UTF16)] */, >- const char *account_name /* [in] [charset(UTF16)] */, >+ const char *account_name /* [in] [ref,charset(UTF16)] */, > enum netr_SchannelType secure_channel_type /* [in] */, >- const char *computer_name /* [in] [charset(UTF16)] */, >+ const char *computer_name /* [in] [ref,charset(UTF16)] */, > struct netr_Authenticator *credential /* [in] [ref] */, > struct netr_Authenticator *return_authenticator /* [out] [ref] */, > struct samr_Password *password /* [out] [ref] */, >diff --git a/librpc/gen_ndr/ndr_netlogon.c b/librpc/gen_ndr/ndr_netlogon.c >index 8db8c11..9668e7f 100644 >--- a/librpc/gen_ndr/ndr_netlogon.c >+++ b/librpc/gen_ndr/ndr_netlogon.c >@@ -7213,287 +7213,419 @@ _PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, > ndr->depth--; > } > >-static enum ndr_err_code ndr_push_netr_DomainQuery1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainQuery1 *r) >+_PUBLIC_ enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r) >+{ >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); >+ return NDR_ERR_SUCCESS; >+} >+ >+_PUBLIC_ enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) >+{ >+ uint32_t v; >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); >+ *r = v; >+ return NDR_ERR_SUCCESS; >+} >+ >+_PUBLIC_ void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r) >+{ >+ ndr_print_uint32(ndr, name, r); >+ ndr->depth++; >+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS", NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS, r); >+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_SPN_UPDATE", NETR_WS_FLAG_HANDLES_SPN_UPDATE, r); >+ ndr->depth--; >+} >+ >+static enum ndr_err_code ndr_push_netr_LsaPolicyInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_LsaPolicyInformation *r) > { >- uint32_t cntr_unknown7_0; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_push_align(ndr, 4)); >- NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS, &r->blob)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_domain)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_site)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown1)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown2)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown3)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown4)); >- NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_SCALARS, &r->blob2)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->product)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown5)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown6)); >- for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7[cntr_unknown7_0])); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy)); >+ } >+ if (ndr_flags & NDR_BUFFERS) { >+ if (r->policy) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size)); >+ NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->policy, r->policy_size)); >+ } >+ } >+ return NDR_ERR_SUCCESS; >+} >+ >+static enum ndr_err_code ndr_pull_netr_LsaPolicyInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_LsaPolicyInformation *r) >+{ >+ uint32_t _ptr_policy; >+ TALLOC_CTX *_mem_save_policy_0; >+ if (ndr_flags & NDR_SCALARS) { >+ NDR_CHECK(ndr_pull_align(ndr, 4)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->policy_size)); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy)); >+ if (_ptr_policy) { >+ NDR_PULL_ALLOC(ndr, r->policy); >+ } else { >+ r->policy = NULL; >+ } >+ } >+ if (ndr_flags & NDR_BUFFERS) { >+ if (r->policy) { >+ _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->policy)); >+ NDR_PULL_ALLOC_N(ndr, r->policy, ndr_get_array_size(ndr, &r->policy)); >+ NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->policy, ndr_get_array_size(ndr, &r->policy))); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0); >+ } >+ if (r->policy) { >+ NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->policy, r->policy_size)); > } > } >+ return NDR_ERR_SUCCESS; >+} >+ >+_PUBLIC_ void ndr_print_netr_LsaPolicyInformation(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInformation *r) >+{ >+ ndr_print_struct(ndr, name, "netr_LsaPolicyInformation"); >+ ndr->depth++; >+ ndr_print_uint32(ndr, "policy_size", r->policy_size); >+ ndr_print_ptr(ndr, "policy", r->policy); >+ ndr->depth++; >+ if (r->policy) { >+ ndr_print_array_uint8(ndr, "policy", r->policy, r->policy_size); >+ } >+ ndr->depth--; >+ ndr->depth--; >+} >+ >+static enum ndr_err_code ndr_push_netr_WorkstationInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_WorkstationInformation *r) >+{ >+ if (ndr_flags & NDR_SCALARS) { >+ NDR_CHECK(ndr_push_align(ndr, 4)); >+ NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_hostname)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy1)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy2)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy3)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy4)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->os_version)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->os_name)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); >+ NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4)); >+ } > if (ndr_flags & NDR_BUFFERS) { >- NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_BUFFERS, &r->blob)); >- if (r->workstation_domain) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16))); >+ NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy)); >+ if (r->dns_hostname) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_domain, ndr_charset_length(r->workstation_domain, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_hostname, ndr_charset_length(r->dns_hostname, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- if (r->workstation_site) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16))); >+ if (r->sitename) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_site, ndr_charset_length(r->workstation_site, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->sitename, ndr_charset_length(r->sitename, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- if (r->unknown1) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16))); >+ if (r->dummy1) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown1, ndr_charset_length(r->unknown1, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy1, ndr_charset_length(r->dummy1, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- if (r->unknown2) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16))); >+ if (r->dummy2) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown2, ndr_charset_length(r->unknown2, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy2, ndr_charset_length(r->dummy2, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- if (r->unknown3) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16))); >+ if (r->dummy3) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown3, ndr_charset_length(r->unknown3, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy3, ndr_charset_length(r->dummy3, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- if (r->unknown4) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16))); >+ if (r->dummy4) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16))); >- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown4, ndr_charset_length(r->unknown4, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy4, ndr_charset_length(r->dummy4, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >- NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->blob2)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->product)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown5)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown6)); >+ if (r->os_version) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->os_version, CH_UTF16))); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->os_version, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->os_version, ndr_charset_length(r->os_version, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ } >+ if (r->os_name) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->os_name, CH_UTF16))); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->os_name, CH_UTF16))); >+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->os_name, ndr_charset_length(r->os_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ } >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); > } > return NDR_ERR_SUCCESS; > } > >-static enum ndr_err_code ndr_pull_netr_DomainQuery1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainQuery1 *r) >+static enum ndr_err_code ndr_pull_netr_WorkstationInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_WorkstationInformation *r) > { >- uint32_t _ptr_workstation_domain; >- TALLOC_CTX *_mem_save_workstation_domain_0; >- uint32_t _ptr_workstation_site; >- TALLOC_CTX *_mem_save_workstation_site_0; >- uint32_t _ptr_unknown1; >- TALLOC_CTX *_mem_save_unknown1_0; >- uint32_t _ptr_unknown2; >- TALLOC_CTX *_mem_save_unknown2_0; >- uint32_t _ptr_unknown3; >- TALLOC_CTX *_mem_save_unknown3_0; >- uint32_t _ptr_unknown4; >- TALLOC_CTX *_mem_save_unknown4_0; >- uint32_t cntr_unknown7_0; >+ uint32_t _ptr_dns_hostname; >+ TALLOC_CTX *_mem_save_dns_hostname_0; >+ uint32_t _ptr_sitename; >+ TALLOC_CTX *_mem_save_sitename_0; >+ uint32_t _ptr_dummy1; >+ TALLOC_CTX *_mem_save_dummy1_0; >+ uint32_t _ptr_dummy2; >+ TALLOC_CTX *_mem_save_dummy2_0; >+ uint32_t _ptr_dummy3; >+ TALLOC_CTX *_mem_save_dummy3_0; >+ uint32_t _ptr_dummy4; >+ TALLOC_CTX *_mem_save_dummy4_0; >+ uint32_t _ptr_os_version; >+ TALLOC_CTX *_mem_save_os_version_0; >+ uint32_t _ptr_os_name; >+ TALLOC_CTX *_mem_save_os_name_0; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_pull_align(ndr, 4)); >- NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS, &r->blob)); >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_domain)); >- if (_ptr_workstation_domain) { >- NDR_PULL_ALLOC(ndr, r->workstation_domain); >+ NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy)); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_hostname)); >+ if (_ptr_dns_hostname) { >+ NDR_PULL_ALLOC(ndr, r->dns_hostname); > } else { >- r->workstation_domain = NULL; >+ r->dns_hostname = NULL; > } >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_site)); >- if (_ptr_workstation_site) { >- NDR_PULL_ALLOC(ndr, r->workstation_site); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename)); >+ if (_ptr_sitename) { >+ NDR_PULL_ALLOC(ndr, r->sitename); >+ } else { >+ r->sitename = NULL; >+ } >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy1)); >+ if (_ptr_dummy1) { >+ NDR_PULL_ALLOC(ndr, r->dummy1); > } else { >- r->workstation_site = NULL; >+ r->dummy1 = NULL; > } >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown1)); >- if (_ptr_unknown1) { >- NDR_PULL_ALLOC(ndr, r->unknown1); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy2)); >+ if (_ptr_dummy2) { >+ NDR_PULL_ALLOC(ndr, r->dummy2); > } else { >- r->unknown1 = NULL; >+ r->dummy2 = NULL; > } >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2)); >- if (_ptr_unknown2) { >- NDR_PULL_ALLOC(ndr, r->unknown2); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy3)); >+ if (_ptr_dummy3) { >+ NDR_PULL_ALLOC(ndr, r->dummy3); > } else { >- r->unknown2 = NULL; >+ r->dummy3 = NULL; > } >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown3)); >- if (_ptr_unknown3) { >- NDR_PULL_ALLOC(ndr, r->unknown3); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy4)); >+ if (_ptr_dummy4) { >+ NDR_PULL_ALLOC(ndr, r->dummy4); > } else { >- r->unknown3 = NULL; >+ r->dummy4 = NULL; > } >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown4)); >- if (_ptr_unknown4) { >- NDR_PULL_ALLOC(ndr, r->unknown4); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_os_version)); >+ if (_ptr_os_version) { >+ NDR_PULL_ALLOC(ndr, r->os_version); > } else { >- r->unknown4 = NULL; >+ r->os_version = NULL; > } >- NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_SCALARS, &r->blob2)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->product)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown5)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown6)); >- for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) { >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7[cntr_unknown7_0])); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_os_name)); >+ if (_ptr_os_name) { >+ NDR_PULL_ALLOC(ndr, r->os_name); >+ } else { >+ r->os_name = NULL; > } >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); >+ NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4)); > } > if (ndr_flags & NDR_BUFFERS) { >- NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_BUFFERS, &r->blob)); >- if (r->workstation_domain) { >- _mem_save_workstation_domain_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->workstation_domain, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_domain)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_domain)); >- if (ndr_get_array_length(ndr, &r->workstation_domain) > ndr_get_array_size(ndr, &r->workstation_domain)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_domain), ndr_get_array_length(ndr, &r->workstation_domain)); >+ NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy)); >+ if (r->dns_hostname) { >+ _mem_save_dns_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->dns_hostname, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_hostname)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_hostname)); >+ if (ndr_get_array_length(ndr, &r->dns_hostname) > ndr_get_array_size(ndr, &r->dns_hostname)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_hostname), ndr_get_array_length(ndr, &r->dns_hostname)); >+ } >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_hostname, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_hostname_0, 0); >+ } >+ if (r->sitename) { >+ _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->sitename)); >+ if (ndr_get_array_length(ndr, &r->sitename) > ndr_get_array_size(ndr, &r->sitename)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->sitename), ndr_get_array_length(ndr, &r->sitename)); >+ } >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->sitename, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0); >+ } >+ if (r->dummy1) { >+ _mem_save_dummy1_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->dummy1, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy1)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy1)); >+ if (ndr_get_array_length(ndr, &r->dummy1) > ndr_get_array_size(ndr, &r->dummy1)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy1), ndr_get_array_length(ndr, &r->dummy1)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_domain, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_domain_0, 0); >- } >- if (r->workstation_site) { >- _mem_save_workstation_site_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->workstation_site, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_site)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_site)); >- if (ndr_get_array_length(ndr, &r->workstation_site) > ndr_get_array_size(ndr, &r->workstation_site)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_site), ndr_get_array_length(ndr, &r->workstation_site)); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy1, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy1_0, 0); >+ } >+ if (r->dummy2) { >+ _mem_save_dummy2_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->dummy2, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy2)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy2)); >+ if (ndr_get_array_length(ndr, &r->dummy2) > ndr_get_array_size(ndr, &r->dummy2)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy2), ndr_get_array_length(ndr, &r->dummy2)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_site, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_site_0, 0); >- } >- if (r->unknown1) { >- _mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->unknown1, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown1)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown1)); >- if (ndr_get_array_length(ndr, &r->unknown1) > ndr_get_array_size(ndr, &r->unknown1)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown1), ndr_get_array_length(ndr, &r->unknown1)); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy2, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy2_0, 0); >+ } >+ if (r->dummy3) { >+ _mem_save_dummy3_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->dummy3, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy3)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy3)); >+ if (ndr_get_array_length(ndr, &r->dummy3) > ndr_get_array_size(ndr, &r->dummy3)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy3), ndr_get_array_length(ndr, &r->dummy3)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown1, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, 0); >- } >- if (r->unknown2) { >- _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->unknown2, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown2)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown2)); >- if (ndr_get_array_length(ndr, &r->unknown2) > ndr_get_array_size(ndr, &r->unknown2)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown2), ndr_get_array_length(ndr, &r->unknown2)); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy3, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy3_0, 0); >+ } >+ if (r->dummy4) { >+ _mem_save_dummy4_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->dummy4, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy4)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy4)); >+ if (ndr_get_array_length(ndr, &r->dummy4) > ndr_get_array_size(ndr, &r->dummy4)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy4), ndr_get_array_length(ndr, &r->dummy4)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown2, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0); >- } >- if (r->unknown3) { >- _mem_save_unknown3_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->unknown3, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown3)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown3)); >- if (ndr_get_array_length(ndr, &r->unknown3) > ndr_get_array_size(ndr, &r->unknown3)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown3), ndr_get_array_length(ndr, &r->unknown3)); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy4, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy4_0, 0); >+ } >+ if (r->os_version) { >+ _mem_save_os_version_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->os_version, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->os_version)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->os_version)); >+ if (ndr_get_array_length(ndr, &r->os_version) > ndr_get_array_size(ndr, &r->os_version)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->os_version), ndr_get_array_length(ndr, &r->os_version)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown3, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown3_0, 0); >- } >- if (r->unknown4) { >- _mem_save_unknown4_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->unknown4, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown4)); >- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown4)); >- if (ndr_get_array_length(ndr, &r->unknown4) > ndr_get_array_size(ndr, &r->unknown4)) { >- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown4), ndr_get_array_length(ndr, &r->unknown4)); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->os_version), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->os_version, ndr_get_array_length(ndr, &r->os_version), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_os_version_0, 0); >+ } >+ if (r->os_name) { >+ _mem_save_os_name_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->os_name, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->os_name)); >+ NDR_CHECK(ndr_pull_array_length(ndr, &r->os_name)); >+ if (ndr_get_array_length(ndr, &r->os_name) > ndr_get_array_size(ndr, &r->os_name)) { >+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->os_name), ndr_get_array_length(ndr, &r->os_name)); > } >- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t))); >- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown4, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t), CH_UTF16)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown4_0, 0); >+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->os_name), sizeof(uint16_t))); >+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->os_name, ndr_get_array_length(ndr, &r->os_name), sizeof(uint16_t), CH_UTF16)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_os_name_0, 0); > } >- NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->blob2)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->product)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown5)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown6)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); > } > return NDR_ERR_SUCCESS; > } > >-_PUBLIC_ void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r) >+_PUBLIC_ void ndr_print_netr_WorkstationInformation(struct ndr_print *ndr, const char *name, const struct netr_WorkstationInformation *r) > { >- uint32_t cntr_unknown7_0; >- ndr_print_struct(ndr, name, "netr_DomainQuery1"); >+ ndr_print_struct(ndr, name, "netr_WorkstationInformation"); > ndr->depth++; >- ndr_print_netr_Blob(ndr, "blob", &r->blob); >- ndr_print_ptr(ndr, "workstation_domain", r->workstation_domain); >+ ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy); >+ ndr_print_ptr(ndr, "dns_hostname", r->dns_hostname); > ndr->depth++; >- if (r->workstation_domain) { >- ndr_print_string(ndr, "workstation_domain", r->workstation_domain); >+ if (r->dns_hostname) { >+ ndr_print_string(ndr, "dns_hostname", r->dns_hostname); > } > ndr->depth--; >- ndr_print_ptr(ndr, "workstation_site", r->workstation_site); >+ ndr_print_ptr(ndr, "sitename", r->sitename); > ndr->depth++; >- if (r->workstation_site) { >- ndr_print_string(ndr, "workstation_site", r->workstation_site); >+ if (r->sitename) { >+ ndr_print_string(ndr, "sitename", r->sitename); > } > ndr->depth--; >- ndr_print_ptr(ndr, "unknown1", r->unknown1); >+ ndr_print_ptr(ndr, "dummy1", r->dummy1); > ndr->depth++; >- if (r->unknown1) { >- ndr_print_string(ndr, "unknown1", r->unknown1); >+ if (r->dummy1) { >+ ndr_print_string(ndr, "dummy1", r->dummy1); > } > ndr->depth--; >- ndr_print_ptr(ndr, "unknown2", r->unknown2); >+ ndr_print_ptr(ndr, "dummy2", r->dummy2); > ndr->depth++; >- if (r->unknown2) { >- ndr_print_string(ndr, "unknown2", r->unknown2); >+ if (r->dummy2) { >+ ndr_print_string(ndr, "dummy2", r->dummy2); > } > ndr->depth--; >- ndr_print_ptr(ndr, "unknown3", r->unknown3); >+ ndr_print_ptr(ndr, "dummy3", r->dummy3); > ndr->depth++; >- if (r->unknown3) { >- ndr_print_string(ndr, "unknown3", r->unknown3); >+ if (r->dummy3) { >+ ndr_print_string(ndr, "dummy3", r->dummy3); > } > ndr->depth--; >- ndr_print_ptr(ndr, "unknown4", r->unknown4); >+ ndr_print_ptr(ndr, "dummy4", r->dummy4); > ndr->depth++; >- if (r->unknown4) { >- ndr_print_string(ndr, "unknown4", r->unknown4); >+ if (r->dummy4) { >+ ndr_print_string(ndr, "dummy4", r->dummy4); > } > ndr->depth--; >- ndr_print_lsa_BinaryString(ndr, "blob2", &r->blob2); >- ndr_print_lsa_String(ndr, "product", &r->product); >- ndr_print_lsa_String(ndr, "unknown5", &r->unknown5); >- ndr_print_lsa_String(ndr, "unknown6", &r->unknown6); >- ndr->print(ndr, "%s: ARRAY(%d)", "unknown7", (int)4); >+ ndr_print_ptr(ndr, "os_version", r->os_version); > ndr->depth++; >- for (cntr_unknown7_0=0;cntr_unknown7_0<4;cntr_unknown7_0++) { >- char *idx_0=NULL; >- if (asprintf(&idx_0, "[%d]", cntr_unknown7_0) != -1) { >- ndr_print_uint32(ndr, "unknown7", r->unknown7[cntr_unknown7_0]); >- free(idx_0); >- } >+ if (r->os_version) { >+ ndr_print_string(ndr, "os_version", r->os_version); >+ } >+ ndr->depth--; >+ ndr_print_ptr(ndr, "os_name", r->os_name); >+ ndr->depth++; >+ if (r->os_name) { >+ ndr_print_string(ndr, "os_name", r->os_name); > } > ndr->depth--; >+ ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3); >+ ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4); >+ ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags); >+ ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2); >+ ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3); >+ ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4); > ndr->depth--; > } > >-static enum ndr_err_code ndr_push_netr_DomainQuery(struct ndr_push *ndr, int ndr_flags, const union netr_DomainQuery *r) >+static enum ndr_err_code ndr_push_netr_WorkstationInfo(struct ndr_push *ndr, int ndr_flags, const union netr_WorkstationInfo *r) > { > if (ndr_flags & NDR_SCALARS) { > int level = ndr_push_get_switch_value(ndr, r); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); > switch (level) { > case 1: { >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_info)); > break; } > > case 2: { >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info)); > break; } > > default: >@@ -7504,14 +7636,14 @@ static enum ndr_err_code ndr_push_netr_DomainQuery(struct ndr_push *ndr, int ndr > int level = ndr_push_get_switch_value(ndr, r); > switch (level) { > case 1: >- if (r->query1) { >- NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1)); >+ if (r->workstation_info) { >+ NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info)); > } > break; > > case 2: >- if (r->query1) { >- NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1)); >+ if (r->lsa_policy_info) { >+ NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info)); > } > break; > >@@ -7522,11 +7654,12 @@ static enum ndr_err_code ndr_push_netr_DomainQuery(struct ndr_push *ndr, int ndr > return NDR_ERR_SUCCESS; > } > >-static enum ndr_err_code ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr_flags, union netr_DomainQuery *r) >+static enum ndr_err_code ndr_pull_netr_WorkstationInfo(struct ndr_pull *ndr, int ndr_flags, union netr_WorkstationInfo *r) > { > int level; > uint32_t _level; >- TALLOC_CTX *_mem_save_query1_0; >+ TALLOC_CTX *_mem_save_workstation_info_0; >+ TALLOC_CTX *_mem_save_lsa_policy_info_0; > level = ndr_pull_get_switch_value(ndr, r); > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); >@@ -7535,22 +7668,22 @@ static enum ndr_err_code ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr > } > switch (level) { > case 1: { >- uint32_t _ptr_query1; >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1)); >- if (_ptr_query1) { >- NDR_PULL_ALLOC(ndr, r->query1); >+ uint32_t _ptr_workstation_info; >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_info)); >+ if (_ptr_workstation_info) { >+ NDR_PULL_ALLOC(ndr, r->workstation_info); > } else { >- r->query1 = NULL; >+ r->workstation_info = NULL; > } > break; } > > case 2: { >- uint32_t _ptr_query1; >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1)); >- if (_ptr_query1) { >- NDR_PULL_ALLOC(ndr, r->query1); >+ uint32_t _ptr_lsa_policy_info; >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info)); >+ if (_ptr_lsa_policy_info) { >+ NDR_PULL_ALLOC(ndr, r->lsa_policy_info); > } else { >- r->query1 = NULL; >+ r->lsa_policy_info = NULL; > } > break; } > >@@ -7561,20 +7694,20 @@ static enum ndr_err_code ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr > if (ndr_flags & NDR_BUFFERS) { > switch (level) { > case 1: >- if (r->query1) { >- _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0); >- NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0); >+ if (r->workstation_info) { >+ _mem_save_workstation_info_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->workstation_info, 0); >+ NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_info_0, 0); > } > break; > > case 2: >- if (r->query1) { >- _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0); >- NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0); >+ if (r->lsa_policy_info) { >+ _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0); >+ NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0); > } > break; > >@@ -7585,26 +7718,26 @@ static enum ndr_err_code ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr > return NDR_ERR_SUCCESS; > } > >-_PUBLIC_ void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r) >+_PUBLIC_ void ndr_print_netr_WorkstationInfo(struct ndr_print *ndr, const char *name, const union netr_WorkstationInfo *r) > { > int level; > level = ndr_print_get_switch_value(ndr, r); >- ndr_print_union(ndr, name, level, "netr_DomainQuery"); >+ ndr_print_union(ndr, name, level, "netr_WorkstationInfo"); > switch (level) { > case 1: >- ndr_print_ptr(ndr, "query1", r->query1); >+ ndr_print_ptr(ndr, "workstation_info", r->workstation_info); > ndr->depth++; >- if (r->query1) { >- ndr_print_netr_DomainQuery1(ndr, "query1", r->query1); >+ if (r->workstation_info) { >+ ndr_print_netr_WorkstationInformation(ndr, "workstation_info", r->workstation_info); > } > ndr->depth--; > break; > > case 2: >- ndr_print_ptr(ndr, "query1", r->query1); >+ ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info); > ndr->depth++; >- if (r->query1) { >- ndr_print_netr_DomainQuery1(ndr, "query1", r->query1); >+ if (r->lsa_policy_info) { >+ ndr_print_netr_WorkstationInformation(ndr, "lsa_policy_info", r->lsa_policy_info); > } > ndr->depth--; > break; >@@ -7719,355 +7852,232 @@ _PUBLIC_ void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, co > ndr->depth--; > } > >-static enum ndr_err_code ndr_push_netr_DomainTrustInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustInfo *r) >+static enum ndr_err_code ndr_push_netr_OneDomainInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_OneDomainInfo *r) > { >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_push_align(ndr, 4)); > NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domainname)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest)); >- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname)); >+ NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid)); > NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummystring[cntr_dummystring_0])); >- } >- for (cntr_dummy_0 = 0; cntr_dummy_0 < 4; cntr_dummy_0++) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy[cntr_dummy_0])); >- } >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long1)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4)); > } > if (ndr_flags & NDR_BUFFERS) { > NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domainname)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname)); >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest)); >- if (r->sid) { >- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname)); >+ if (r->domain_sid) { >+ NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid)); > } > NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummystring[cntr_dummystring_0])); >- } >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); > } > return NDR_ERR_SUCCESS; > } > >-static enum ndr_err_code ndr_pull_netr_DomainTrustInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustInfo *r) >+static enum ndr_err_code ndr_pull_netr_OneDomainInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_OneDomainInfo *r) > { >- uint32_t _ptr_sid; >- TALLOC_CTX *_mem_save_sid_0; >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; >+ uint32_t _ptr_domain_sid; >+ TALLOC_CTX *_mem_save_domain_sid_0; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_pull_align(ndr, 4)); > NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domainname)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest)); >- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid)); >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid)); >- if (_ptr_sid) { >- NDR_PULL_ALLOC(ndr, r->sid); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname)); >+ NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid)); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid)); >+ if (_ptr_domain_sid) { >+ NDR_PULL_ALLOC(ndr, r->domain_sid); > } else { >- r->sid = NULL; >+ r->domain_sid = NULL; > } > NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummystring[cntr_dummystring_0])); >- } >- for (cntr_dummy_0 = 0; cntr_dummy_0 < 4; cntr_dummy_0++) { >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy[cntr_dummy_0])); >- } >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long1)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4)); > } > if (ndr_flags & NDR_BUFFERS) { > NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domainname)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname)); >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest)); >- if (r->sid) { >- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0); >- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname)); >+ if (r->domain_sid) { >+ _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0); >+ NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0); > } > NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummystring[cntr_dummystring_0])); >- } >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); > } > return NDR_ERR_SUCCESS; > } > >-_PUBLIC_ void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r) >+_PUBLIC_ void ndr_print_netr_OneDomainInfo(struct ndr_print *ndr, const char *name, const struct netr_OneDomainInfo *r) > { >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; >- ndr_print_struct(ndr, name, "netr_DomainTrustInfo"); >+ ndr_print_struct(ndr, name, "netr_OneDomainInfo"); > ndr->depth++; > ndr_print_lsa_String(ndr, "domainname", &r->domainname); >- ndr_print_lsa_String(ndr, "fulldomainname", &r->fulldomainname); >- ndr_print_lsa_String(ndr, "forest", &r->forest); >- ndr_print_GUID(ndr, "guid", &r->guid); >- ndr_print_ptr(ndr, "sid", r->sid); >+ ndr_print_lsa_String(ndr, "dns_domainname", &r->dns_domainname); >+ ndr_print_lsa_String(ndr, "dns_forestname", &r->dns_forestname); >+ ndr_print_GUID(ndr, "domain_guid", &r->domain_guid); >+ ndr_print_ptr(ndr, "domain_sid", r->domain_sid); > ndr->depth++; >- if (r->sid) { >- ndr_print_dom_sid2(ndr, "sid", r->sid); >+ if (r->domain_sid) { >+ ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid); > } > ndr->depth--; > ndr_print_netr_trust_extension_container(ndr, "trust_extension", &r->trust_extension); >- ndr->print(ndr, "%s: ARRAY(%d)", "dummystring", (int)3); >- ndr->depth++; >- for (cntr_dummystring_0=0;cntr_dummystring_0<3;cntr_dummystring_0++) { >- char *idx_0=NULL; >- if (asprintf(&idx_0, "[%d]", cntr_dummystring_0) != -1) { >- ndr_print_lsa_String(ndr, "dummystring", &r->dummystring[cntr_dummystring_0]); >- free(idx_0); >- } >- } >- ndr->depth--; >- ndr->print(ndr, "%s: ARRAY(%d)", "dummy", (int)4); >- ndr->depth++; >- for (cntr_dummy_0=0;cntr_dummy_0<4;cntr_dummy_0++) { >- char *idx_0=NULL; >- if (asprintf(&idx_0, "[%d]", cntr_dummy_0) != -1) { >- ndr_print_uint32(ndr, "dummy", r->dummy[cntr_dummy_0]); >- free(idx_0); >- } >- } >- ndr->depth--; >- ndr->depth--; >-} >- >-static enum ndr_err_code ndr_push_netr_LsaPolicyInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_LsaPolicyInfo *r) >-{ >- if (ndr_flags & NDR_SCALARS) { >- NDR_CHECK(ndr_push_align(ndr, 4)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy)); >- } >- if (ndr_flags & NDR_BUFFERS) { >- if (r->policy) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size)); >- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->policy, r->policy_size)); >- } >- } >- return NDR_ERR_SUCCESS; >-} >- >-static enum ndr_err_code ndr_pull_netr_LsaPolicyInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_LsaPolicyInfo *r) >-{ >- uint32_t _ptr_policy; >- TALLOC_CTX *_mem_save_policy_0; >- if (ndr_flags & NDR_SCALARS) { >- NDR_CHECK(ndr_pull_align(ndr, 4)); >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->policy_size)); >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy)); >- if (_ptr_policy) { >- NDR_PULL_ALLOC(ndr, r->policy); >- } else { >- r->policy = NULL; >- } >- } >- if (ndr_flags & NDR_BUFFERS) { >- if (r->policy) { >- _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->policy)); >- NDR_PULL_ALLOC_N(ndr, r->policy, ndr_get_array_size(ndr, &r->policy)); >- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->policy, ndr_get_array_size(ndr, &r->policy))); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0); >- } >- if (r->policy) { >- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->policy, r->policy_size)); >- } >- } >- return NDR_ERR_SUCCESS; >-} >- >-_PUBLIC_ void ndr_print_netr_LsaPolicyInfo(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInfo *r) >-{ >- ndr_print_struct(ndr, name, "netr_LsaPolicyInfo"); >- ndr->depth++; >- ndr_print_uint32(ndr, "policy_size", r->policy_size); >- ndr_print_ptr(ndr, "policy", r->policy); >- ndr->depth++; >- if (r->policy) { >- ndr_print_array_uint8(ndr, "policy", r->policy, r->policy_size); >- } >- ndr->depth--; >- ndr->depth--; >-} >- >-_PUBLIC_ enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r) >-{ >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); >- return NDR_ERR_SUCCESS; >-} >- >-_PUBLIC_ enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) >-{ >- uint32_t v; >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); >- *r = v; >- return NDR_ERR_SUCCESS; >-} >- >-_PUBLIC_ void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r) >-{ >- ndr_print_uint32(ndr, name, r); >- ndr->depth++; >- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS", NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS, r); >- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_SPN_UPDATE", NETR_WS_FLAG_HANDLES_SPN_UPDATE, r); >+ ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2); >+ ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3); >+ ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4); >+ ndr_print_uint32(ndr, "dummy_long1", r->dummy_long1); >+ ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2); >+ ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3); >+ ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4); > ndr->depth--; > } > >-static enum ndr_err_code ndr_push_netr_DomainInfo1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInfo1 *r) >+static enum ndr_err_code ndr_push_netr_DomainInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInformation *r) > { >- uint32_t cntr_trusts_1; >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; >+ uint32_t cntr_trusted_domains_1; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_push_align(ndr, 4)); >- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo)); >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts)); >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusts)); >- NDR_CHECK(ndr_push_netr_LsaPolicyInfo(ndr, NDR_SCALARS, &r->lsa_policy)); >+ NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domains)); >+ NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy)); > NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummystring[cntr_dummystring_0])); >- } >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); > NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->supported_enc_types)); >- for (cntr_dummy_0 = 0; cntr_dummy_0 < 2; cntr_dummy_0++) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy[cntr_dummy_0])); >- } >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3)); >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4)); > } > if (ndr_flags & NDR_BUFFERS) { >- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo)); >- if (r->trusts) { >- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts)); >- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) { >- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1])); >+ NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain)); >+ if (r->trusted_domains) { >+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count)); >+ for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) { >+ NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1])); > } >- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) { >- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1])); >+ for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) { >+ NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1])); > } > } >- NDR_CHECK(ndr_push_netr_LsaPolicyInfo(ndr, NDR_BUFFERS, &r->lsa_policy)); >+ NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy)); > NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummystring[cntr_dummystring_0])); >- } >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); > } > return NDR_ERR_SUCCESS; > } > >-static enum ndr_err_code ndr_pull_netr_DomainInfo1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInfo1 *r) >+static enum ndr_err_code ndr_pull_netr_DomainInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInformation *r) > { >- uint32_t _ptr_trusts; >- uint32_t cntr_trusts_1; >- TALLOC_CTX *_mem_save_trusts_0; >- TALLOC_CTX *_mem_save_trusts_1; >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; >+ uint32_t _ptr_trusted_domains; >+ uint32_t cntr_trusted_domains_1; >+ TALLOC_CTX *_mem_save_trusted_domains_0; >+ TALLOC_CTX *_mem_save_trusted_domains_1; > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_pull_align(ndr, 4)); >- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo)); >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_trusts)); >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusts)); >- if (_ptr_trusts) { >- NDR_PULL_ALLOC(ndr, r->trusts); >+ NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trusted_domain_count)); >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domains)); >+ if (_ptr_trusted_domains) { >+ NDR_PULL_ALLOC(ndr, r->trusted_domains); > } else { >- r->trusts = NULL; >+ r->trusted_domains = NULL; > } >- NDR_CHECK(ndr_pull_netr_LsaPolicyInfo(ndr, NDR_SCALARS, &r->lsa_policy)); >+ NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy)); > NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummystring[cntr_dummystring_0])); >- } >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4)); > NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags)); > NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->supported_enc_types)); >- for (cntr_dummy_0 = 0; cntr_dummy_0 < 2; cntr_dummy_0++) { >- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy[cntr_dummy_0])); >- } >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3)); >+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4)); > } > if (ndr_flags & NDR_BUFFERS) { >- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo)); >- if (r->trusts) { >- _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0); >- NDR_CHECK(ndr_pull_array_size(ndr, &r->trusts)); >- NDR_PULL_ALLOC_N(ndr, r->trusts, ndr_get_array_size(ndr, &r->trusts)); >- _mem_save_trusts_1 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0); >- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) { >- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1])); >+ NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain)); >+ if (r->trusted_domains) { >+ _mem_save_trusted_domains_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0); >+ NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_domains)); >+ NDR_PULL_ALLOC_N(ndr, r->trusted_domains, ndr_get_array_size(ndr, &r->trusted_domains)); >+ _mem_save_trusted_domains_1 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0); >+ for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) { >+ NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1])); > } >- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) { >- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1])); >+ for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) { >+ NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1])); > } >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_1, 0); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, 0); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_1, 0); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_0, 0); > } >- NDR_CHECK(ndr_pull_netr_LsaPolicyInfo(ndr, NDR_BUFFERS, &r->lsa_policy)); >+ NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy)); > NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname)); >- for (cntr_dummystring_0 = 0; cntr_dummystring_0 < 3; cntr_dummystring_0++) { >- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummystring[cntr_dummystring_0])); >- } >- if (r->trusts) { >- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusts, r->num_trusts)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3)); >+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4)); >+ if (r->trusted_domains) { >+ NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusted_domains, r->trusted_domain_count)); > } > } > return NDR_ERR_SUCCESS; > } > >-_PUBLIC_ void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r) >+_PUBLIC_ void ndr_print_netr_DomainInformation(struct ndr_print *ndr, const char *name, const struct netr_DomainInformation *r) > { >- uint32_t cntr_trusts_1; >- uint32_t cntr_dummystring_0; >- uint32_t cntr_dummy_0; >- ndr_print_struct(ndr, name, "netr_DomainInfo1"); >+ uint32_t cntr_trusted_domains_1; >+ ndr_print_struct(ndr, name, "netr_DomainInformation"); > ndr->depth++; >- ndr_print_netr_DomainTrustInfo(ndr, "domaininfo", &r->domaininfo); >- ndr_print_uint32(ndr, "num_trusts", r->num_trusts); >- ndr_print_ptr(ndr, "trusts", r->trusts); >+ ndr_print_netr_OneDomainInfo(ndr, "primary_domain", &r->primary_domain); >+ ndr_print_uint32(ndr, "trusted_domain_count", r->trusted_domain_count); >+ ndr_print_ptr(ndr, "trusted_domains", r->trusted_domains); > ndr->depth++; >- if (r->trusts) { >- ndr->print(ndr, "%s: ARRAY(%d)", "trusts", (int)r->num_trusts); >+ if (r->trusted_domains) { >+ ndr->print(ndr, "%s: ARRAY(%d)", "trusted_domains", (int)r->trusted_domain_count); > ndr->depth++; >- for (cntr_trusts_1=0;cntr_trusts_1<r->num_trusts;cntr_trusts_1++) { >+ for (cntr_trusted_domains_1=0;cntr_trusted_domains_1<r->trusted_domain_count;cntr_trusted_domains_1++) { > char *idx_1=NULL; >- if (asprintf(&idx_1, "[%d]", cntr_trusts_1) != -1) { >- ndr_print_netr_DomainTrustInfo(ndr, "trusts", &r->trusts[cntr_trusts_1]); >+ if (asprintf(&idx_1, "[%d]", cntr_trusted_domains_1) != -1) { >+ ndr_print_netr_OneDomainInfo(ndr, "trusted_domains", &r->trusted_domains[cntr_trusted_domains_1]); > free(idx_1); > } > } > ndr->depth--; > } > ndr->depth--; >- ndr_print_netr_LsaPolicyInfo(ndr, "lsa_policy", &r->lsa_policy); >+ ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy); > ndr_print_lsa_String(ndr, "dns_hostname", &r->dns_hostname); >- ndr->print(ndr, "%s: ARRAY(%d)", "dummystring", (int)3); >- ndr->depth++; >- for (cntr_dummystring_0=0;cntr_dummystring_0<3;cntr_dummystring_0++) { >- char *idx_0=NULL; >- if (asprintf(&idx_0, "[%d]", cntr_dummystring_0) != -1) { >- ndr_print_lsa_String(ndr, "dummystring", &r->dummystring[cntr_dummystring_0]); >- free(idx_0); >- } >- } >- ndr->depth--; >+ ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2); >+ ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3); >+ ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4); > ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags); > ndr_print_uint32(ndr, "supported_enc_types", r->supported_enc_types); >- ndr->print(ndr, "%s: ARRAY(%d)", "dummy", (int)2); >- ndr->depth++; >- for (cntr_dummy_0=0;cntr_dummy_0<2;cntr_dummy_0++) { >- char *idx_0=NULL; >- if (asprintf(&idx_0, "[%d]", cntr_dummy_0) != -1) { >- ndr_print_uint32(ndr, "dummy", r->dummy[cntr_dummy_0]); >- free(idx_0); >- } >- } >- ndr->depth--; >+ ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3); >+ ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4); > ndr->depth--; > } > >@@ -8078,11 +8088,11 @@ static enum ndr_err_code ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_ > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); > switch (level) { > case 1: { >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_info)); > break; } > > case 2: { >- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2)); >+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info)); > break; } > > default: >@@ -8093,14 +8103,14 @@ static enum ndr_err_code ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_ > int level = ndr_push_get_switch_value(ndr, r); > switch (level) { > case 1: >- if (r->info1) { >- NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1)); >+ if (r->domain_info) { >+ NDR_CHECK(ndr_push_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info)); > } > break; > > case 2: >- if (r->info2) { >- NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2)); >+ if (r->lsa_policy_info) { >+ NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info)); > } > break; > >@@ -8115,8 +8125,8 @@ static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_ > { > int level; > uint32_t _level; >- TALLOC_CTX *_mem_save_info1_0; >- TALLOC_CTX *_mem_save_info2_0; >+ TALLOC_CTX *_mem_save_domain_info_0; >+ TALLOC_CTX *_mem_save_lsa_policy_info_0; > level = ndr_pull_get_switch_value(ndr, r); > if (ndr_flags & NDR_SCALARS) { > NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); >@@ -8125,22 +8135,22 @@ static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_ > } > switch (level) { > case 1: { >- uint32_t _ptr_info1; >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1)); >- if (_ptr_info1) { >- NDR_PULL_ALLOC(ndr, r->info1); >+ uint32_t _ptr_domain_info; >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_info)); >+ if (_ptr_domain_info) { >+ NDR_PULL_ALLOC(ndr, r->domain_info); > } else { >- r->info1 = NULL; >+ r->domain_info = NULL; > } > break; } > > case 2: { >- uint32_t _ptr_info2; >- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2)); >- if (_ptr_info2) { >- NDR_PULL_ALLOC(ndr, r->info2); >+ uint32_t _ptr_lsa_policy_info; >+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info)); >+ if (_ptr_lsa_policy_info) { >+ NDR_PULL_ALLOC(ndr, r->lsa_policy_info); > } else { >- r->info2 = NULL; >+ r->lsa_policy_info = NULL; > } > break; } > >@@ -8151,20 +8161,20 @@ static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_ > if (ndr_flags & NDR_BUFFERS) { > switch (level) { > case 1: >- if (r->info1) { >- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0); >- NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0); >+ if (r->domain_info) { >+ _mem_save_domain_info_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->domain_info, 0); >+ NDR_CHECK(ndr_pull_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_info_0, 0); > } > break; > > case 2: >- if (r->info2) { >- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr); >- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0); >- NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2)); >- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0); >+ if (r->lsa_policy_info) { >+ _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0); >+ NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0); > } > break; > >@@ -8182,19 +8192,19 @@ _PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, > ndr_print_union(ndr, name, level, "netr_DomainInfo"); > switch (level) { > case 1: >- ndr_print_ptr(ndr, "info1", r->info1); >+ ndr_print_ptr(ndr, "domain_info", r->domain_info); > ndr->depth++; >- if (r->info1) { >- ndr_print_netr_DomainInfo1(ndr, "info1", r->info1); >+ if (r->domain_info) { >+ ndr_print_netr_DomainInformation(ndr, "domain_info", r->domain_info); > } > ndr->depth--; > break; > > case 2: >- ndr_print_ptr(ndr, "info2", r->info2); >+ ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info); > ndr->depth++; >- if (r->info2) { >- ndr_print_netr_DomainInfo1(ndr, "info2", r->info2); >+ if (r->lsa_policy_info) { >+ ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy_info", r->lsa_policy_info); > } > ndr->depth--; > break; >@@ -9187,10 +9197,16 @@ static enum ndr_err_code ndr_push_netr_LogonUasLogoff(struct ndr_push *ndr, int > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ if (r->in.workstation == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16))); >@@ -9278,9 +9294,15 @@ _PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *n > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; >+ ndr_print_ptr(ndr, "workstation", r->in.workstation); >+ ndr->depth++; > ndr_print_string(ndr, "workstation", r->in.workstation); > ndr->depth--; >+ ndr->depth--; > } > if (flags & NDR_OUT) { > ndr_print_struct(ndr, "out", "netr_LogonUasLogoff"); >@@ -9736,6 +9758,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerReqChallenge(struct ndr_push *ndr > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -9828,7 +9853,10 @@ _PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const cha > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credentials", r->in.credentials); > ndr->depth++; > ndr_print_netr_Credential(ndr, "credentials", r->in.credentials); >@@ -9858,11 +9886,17 @@ static enum ndr_err_code ndr_push_netr_ServerAuthenticate(struct ndr_push *ndr, > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -9963,9 +9997,15 @@ _PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const cha > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credentials", r->in.credentials); > ndr->depth++; > ndr_print_netr_Credential(ndr, "credentials", r->in.credentials); >@@ -9995,11 +10035,17 @@ static enum ndr_err_code ndr_push_netr_ServerPasswordSet(struct ndr_push *ndr, i > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -10112,9 +10158,15 @@ _PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -10141,10 +10193,16 @@ _PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char > static enum ndr_err_code ndr_push_netr_DatabaseDeltas(struct ndr_push *ndr, int flags, const struct netr_DatabaseDeltas *r) > { > if (flags & NDR_IN) { >+ if (r->in.logon_server == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -10288,8 +10346,14 @@ _PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *n > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_DatabaseDeltas"); > ndr->depth++; >+ ndr_print_ptr(ndr, "logon_server", r->in.logon_server); >+ ndr->depth++; > ndr_print_string(ndr, "logon_server", r->in.logon_server); >+ ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -10335,10 +10399,16 @@ _PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *n > static enum ndr_err_code ndr_push_netr_DatabaseSync(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync *r) > { > if (flags & NDR_IN) { >+ if (r->in.logon_server == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -10482,8 +10552,14 @@ _PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *nam > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_DatabaseSync"); > ndr->depth++; >+ ndr_print_ptr(ndr, "logon_server", r->in.logon_server); >+ ndr->depth++; > ndr_print_string(ndr, "logon_server", r->in.logon_server); >+ ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -10536,6 +10612,9 @@ static enum ndr_err_code ndr_push_netr_AccountDeltas(struct ndr_push *ndr, int f > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -10703,7 +10782,10 @@ _PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *na > ndr_print_string(ndr, "logon_server", r->in.logon_server); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential); > ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator); > ndr->depth++; >@@ -10754,6 +10836,9 @@ static enum ndr_err_code ndr_push_netr_AccountSync(struct ndr_push *ndr, int fla > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -10944,7 +11029,10 @@ _PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name > ndr_print_string(ndr, "logon_server", r->in.logon_server); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential); > ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator); > ndr->depth++; >@@ -10995,6 +11083,9 @@ _PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name > static enum ndr_err_code ndr_push_netr_GetDcName(struct ndr_push *ndr, int flags, const struct netr_GetDcName *r) > { > if (flags & NDR_IN) { >+ if (r->in.logon_server == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); >@@ -11101,7 +11192,10 @@ _PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_GetDcName"); > ndr->depth++; >+ ndr_print_ptr(ndr, "logon_server", r->in.logon_server); >+ ndr->depth++; > ndr_print_string(ndr, "logon_server", r->in.logon_server); >+ ndr->depth--; > ndr_print_ptr(ndr, "domainname", r->in.domainname); > ndr->depth++; > if (r->in.domainname) { >@@ -11520,11 +11614,17 @@ static enum ndr_err_code ndr_push_netr_ServerAuthenticate2(struct ndr_push *ndr, > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -11650,9 +11750,15 @@ _PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const ch > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credentials", r->in.credentials); > ndr->depth++; > ndr_print_netr_Credential(ndr, "credentials", r->in.credentials); >@@ -11683,10 +11789,16 @@ _PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const ch > static enum ndr_err_code ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync2 *r) > { > if (flags & NDR_IN) { >+ if (r->in.logon_server == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -11832,8 +11944,14 @@ _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *na > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_DatabaseSync2"); > ndr->depth++; >+ ndr_print_ptr(ndr, "logon_server", r->in.logon_server); >+ ndr->depth++; > ndr_print_string(ndr, "logon_server", r->in.logon_server); >+ ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -11880,10 +11998,16 @@ _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *na > static enum ndr_err_code ndr_push_netr_DatabaseRedo(struct ndr_push *ndr, int flags, const struct netr_DatabaseRedo *r) > { > if (flags & NDR_IN) { >+ if (r->in.logon_server == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); >+ if (r->in.computername == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16))); >@@ -12012,8 +12136,14 @@ _PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *nam > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_DatabaseRedo"); > ndr->depth++; >+ ndr_print_ptr(ndr, "logon_server", r->in.logon_server); >+ ndr->depth++; > ndr_print_string(ndr, "logon_server", r->in.logon_server); >+ ndr->depth--; >+ ndr_print_ptr(ndr, "computername", r->in.computername); >+ ndr->depth++; > ndr_print_string(ndr, "computername", r->in.computername); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -12466,6 +12596,9 @@ _PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *nam > static enum ndr_err_code ndr_push_netr_LogonGetCapabilities(struct ndr_push *ndr, int flags, const struct netr_LogonGetCapabilities *r) > { > if (flags & NDR_IN) { >+ if (r->in.server_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); >@@ -12588,7 +12721,10 @@ _PUBLIC_ void ndr_print_netr_LogonGetCapabilities(struct ndr_print *ndr, const c > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_LogonGetCapabilities"); > ndr->depth++; >+ ndr_print_ptr(ndr, "server_name", r->in.server_name); >+ ndr->depth++; > ndr_print_string(ndr, "server_name", r->in.server_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "computer_name", r->in.computer_name); > ndr->depth++; > if (r->in.computer_name) { >@@ -12884,11 +13020,17 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerAuthenticate3(struct ndr_push *nd > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -13028,9 +13170,15 @@ _PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const ch > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credentials", r->in.credentials); > ndr->depth++; > ndr_print_netr_Credential(ndr, "credentials", r->in.credentials); >@@ -13397,6 +13545,9 @@ _PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *n > static enum ndr_err_code ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, int flags, const struct netr_LogonGetDomainInfo *r) > { > if (flags & NDR_IN) { >+ if (r->in.server_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); >@@ -13417,8 +13568,11 @@ static enum ndr_err_code ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, > } > NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level)); >- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.query, r->in.level)); >- NDR_CHECK(ndr_push_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query)); >+ if (r->in.query == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } >+ NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.query, r->in.level)); >+ NDR_CHECK(ndr_push_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query)); > } > if (flags & NDR_OUT) { > if (r->out.return_authenticator == NULL) { >@@ -13441,6 +13595,7 @@ static enum ndr_err_code ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, > TALLOC_CTX *_mem_save_computer_name_0; > TALLOC_CTX *_mem_save_credential_0; > TALLOC_CTX *_mem_save_return_authenticator_0; >+ TALLOC_CTX *_mem_save_query_0; > TALLOC_CTX *_mem_save_info_0; > if (flags & NDR_IN) { > ZERO_STRUCT(r->out); >@@ -13485,8 +13640,14 @@ static enum ndr_err_code ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, > NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator)); > NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC); > NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level)); >- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.query, r->in.level)); >- NDR_CHECK(ndr_pull_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query)); >+ if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { >+ NDR_PULL_ALLOC(ndr, r->in.query); >+ } >+ _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr); >+ NDR_PULL_SET_MEM_CTX(ndr, r->in.query, LIBNDR_FLAG_REF_ALLOC); >+ NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.query, r->in.level)); >+ NDR_CHECK(ndr_pull_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query)); >+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC); > NDR_PULL_ALLOC(ndr, r->out.return_authenticator); > *r->out.return_authenticator = *r->in.return_authenticator; > NDR_PULL_ALLOC(ndr, r->out.info); >@@ -13523,7 +13684,10 @@ _PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const cha > if (flags & NDR_IN) { > ndr_print_struct(ndr, "in", "netr_LogonGetDomainInfo"); > ndr->depth++; >+ ndr_print_ptr(ndr, "server_name", r->in.server_name); >+ ndr->depth++; > ndr_print_string(ndr, "server_name", r->in.server_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "computer_name", r->in.computer_name); > ndr->depth++; > if (r->in.computer_name) { >@@ -13539,8 +13703,11 @@ _PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const cha > ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator); > ndr->depth--; > ndr_print_uint32(ndr, "level", r->in.level); >- ndr_print_set_switch_value(ndr, &r->in.query, r->in.level); >- ndr_print_netr_DomainQuery(ndr, "query", &r->in.query); >+ ndr_print_ptr(ndr, "query", r->in.query); >+ ndr->depth++; >+ ndr_print_set_switch_value(ndr, r->in.query, r->in.level); >+ ndr_print_netr_WorkstationInfo(ndr, "query", r->in.query); >+ ndr->depth--; > ndr->depth--; > } > if (flags & NDR_OUT) { >@@ -13571,11 +13738,17 @@ static enum ndr_err_code ndr_push_netr_ServerPasswordSet2(struct ndr_push *ndr, > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -13688,9 +13861,15 @@ _PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const cha > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -13724,11 +13903,17 @@ static enum ndr_err_code ndr_push_netr_ServerPasswordGet(struct ndr_push *ndr, i > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -13843,9 +14028,15 @@ _PUBLIC_ void ndr_print_netr_ServerPasswordGet(struct ndr_print *ndr, const char > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >@@ -15218,11 +15409,17 @@ static enum ndr_err_code ndr_push_netr_ServerTrustPasswordsGet(struct ndr_push * > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > } >+ if (r->in.account_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16))); > NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); > NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type)); >+ if (r->in.computer_name == NULL) { >+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); >+ } > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); > NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16))); >@@ -15351,9 +15548,15 @@ _PUBLIC_ void ndr_print_netr_ServerTrustPasswordsGet(struct ndr_print *ndr, cons > ndr_print_string(ndr, "server_name", r->in.server_name); > } > ndr->depth--; >+ ndr_print_ptr(ndr, "account_name", r->in.account_name); >+ ndr->depth++; > ndr_print_string(ndr, "account_name", r->in.account_name); >+ ndr->depth--; > ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type); >+ ndr_print_ptr(ndr, "computer_name", r->in.computer_name); >+ ndr->depth++; > ndr_print_string(ndr, "computer_name", r->in.computer_name); >+ ndr->depth--; > ndr_print_ptr(ndr, "credential", r->in.credential); > ndr->depth++; > ndr_print_netr_Authenticator(ndr, "credential", r->in.credential); >diff --git a/librpc/gen_ndr/ndr_netlogon.h b/librpc/gen_ndr/ndr_netlogon.h >index 2dfc0ed..76993af 100644 >--- a/librpc/gen_ndr/ndr_netlogon.h >+++ b/librpc/gen_ndr/ndr_netlogon.h >@@ -208,16 +208,16 @@ enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_f > void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r); > void ndr_print_netr_Capabilities(struct ndr_print *ndr, const char *name, const union netr_Capabilities *r); > void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r); >-void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r); >-void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r); >-void ndr_print_netr_trust_extension(struct ndr_print *ndr, const char *name, const struct netr_trust_extension *r); >-void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, const char *name, const struct netr_trust_extension_container *r); >-void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r); >-void ndr_print_netr_LsaPolicyInfo(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInfo *r); > enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r); > enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r); > void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r); >-void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r); >+void ndr_print_netr_LsaPolicyInformation(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInformation *r); >+void ndr_print_netr_WorkstationInformation(struct ndr_print *ndr, const char *name, const struct netr_WorkstationInformation *r); >+void ndr_print_netr_WorkstationInfo(struct ndr_print *ndr, const char *name, const union netr_WorkstationInfo *r); >+void ndr_print_netr_trust_extension(struct ndr_print *ndr, const char *name, const struct netr_trust_extension *r); >+void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, const char *name, const struct netr_trust_extension_container *r); >+void ndr_print_netr_OneDomainInfo(struct ndr_print *ndr, const char *name, const struct netr_OneDomainInfo *r); >+void ndr_print_netr_DomainInformation(struct ndr_print *ndr, const char *name, const struct netr_DomainInformation *r); > void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r); > void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r); > void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r); >diff --git a/librpc/gen_ndr/netlogon.h b/librpc/gen_ndr/netlogon.h >index 7010e80..3089d80 100644 >--- a/librpc/gen_ndr/netlogon.h >+++ b/librpc/gen_ndr/netlogon.h >@@ -875,23 +875,36 @@ union netr_Capabilities { > #define NETR_TRUST_FLAG_MIT_KRB5 ( 0x00000080 ) > #define NETR_TRUST_FLAG_AES ( 0x00000100 ) > >-struct netr_DomainQuery1 { >- struct netr_Blob blob; >- const char *workstation_domain;/* [unique,charset(UTF16)] */ >- const char *workstation_site;/* [unique,charset(UTF16)] */ >- const char *unknown1;/* [unique,charset(UTF16)] */ >- const char *unknown2;/* [unique,charset(UTF16)] */ >- const char *unknown3;/* [unique,charset(UTF16)] */ >- const char *unknown4;/* [unique,charset(UTF16)] */ >- struct lsa_BinaryString blob2; >- struct lsa_String product; >- struct lsa_String unknown5; >- struct lsa_String unknown6; >- uint32_t unknown7[4]; >+/* bitmap netr_WorkstationFlags */ >+#define NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS ( 0x00000001 ) >+#define NETR_WS_FLAG_HANDLES_SPN_UPDATE ( 0x00000002 ) >+ >+struct netr_LsaPolicyInformation { >+ uint32_t policy_size; >+ uint8_t *policy;/* [unique,size_is(policy_size)] */ > }; > >-union netr_DomainQuery { >- struct netr_DomainQuery1 *query1;/* [unique,case] */ >+struct netr_WorkstationInformation { >+ struct netr_LsaPolicyInformation lsa_policy; >+ const char *dns_hostname;/* [unique,charset(UTF16)] */ >+ const char *sitename;/* [unique,charset(UTF16)] */ >+ const char *dummy1;/* [unique,charset(UTF16)] */ >+ const char *dummy2;/* [unique,charset(UTF16)] */ >+ const char *dummy3;/* [unique,charset(UTF16)] */ >+ const char *dummy4;/* [unique,charset(UTF16)] */ >+ const char *os_version;/* [unique,charset(UTF16)] */ >+ const char *os_name;/* [unique,charset(UTF16)] */ >+ struct lsa_String dummy_string3; >+ struct lsa_String dummy_string4; >+ uint32_t workstation_flags; >+ uint32_t dummy_long2; >+ uint32_t dummy_long3; >+ uint32_t dummy_long4; >+}; >+ >+union netr_WorkstationInfo { >+ struct netr_WorkstationInformation *workstation_info;/* [unique,case] */ >+ struct netr_WorkstationInformation *lsa_policy_info;/* [unique,case(2)] */ > }; > > struct netr_trust_extension { >@@ -910,41 +923,40 @@ struct netr_trust_extension_container { > struct netr_trust_extension *info;/* [unique] */ > }; > >-struct netr_DomainTrustInfo { >+struct netr_OneDomainInfo { > struct lsa_String domainname; >- struct lsa_String fulldomainname; >- struct lsa_String forest; >- struct GUID guid; >- struct dom_sid2 *sid;/* [unique] */ >+ struct lsa_String dns_domainname; >+ struct lsa_String dns_forestname; >+ struct GUID domain_guid; >+ struct dom_sid2 *domain_sid;/* [unique] */ > struct netr_trust_extension_container trust_extension; >- struct lsa_String dummystring[3]; >- uint32_t dummy[4]; >-}; >- >-struct netr_LsaPolicyInfo { >- uint32_t policy_size; >- uint8_t *policy;/* [unique,size_is(policy_size)] */ >-}; >- >-/* bitmap netr_WorkstationFlags */ >-#define NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS ( 0x00000001 ) >-#define NETR_WS_FLAG_HANDLES_SPN_UPDATE ( 0x00000002 ) >- >-struct netr_DomainInfo1 { >- struct netr_DomainTrustInfo domaininfo; >- uint32_t num_trusts; >- struct netr_DomainTrustInfo *trusts;/* [unique,size_is(num_trusts)] */ >- struct netr_LsaPolicyInfo lsa_policy; >+ struct lsa_String dummy_string2; >+ struct lsa_String dummy_string3; >+ struct lsa_String dummy_string4; >+ uint32_t dummy_long1; >+ uint32_t dummy_long2; >+ uint32_t dummy_long3; >+ uint32_t dummy_long4; >+}; >+ >+struct netr_DomainInformation { >+ struct netr_OneDomainInfo primary_domain; >+ uint32_t trusted_domain_count; >+ struct netr_OneDomainInfo *trusted_domains;/* [unique,size_is(trusted_domain_count)] */ >+ struct netr_LsaPolicyInformation lsa_policy; > struct lsa_String dns_hostname; >- struct lsa_String dummystring[3]; >+ struct lsa_String dummy_string2; >+ struct lsa_String dummy_string3; >+ struct lsa_String dummy_string4; > uint32_t workstation_flags; > uint32_t supported_enc_types; >- uint32_t dummy[2]; >+ uint32_t dummy_long3; >+ uint32_t dummy_long4; > }; > > union netr_DomainInfo { >- struct netr_DomainInfo1 *info1;/* [unique,case] */ >- struct netr_DomainInfo1 *info2;/* [unique,case(2)] */ >+ struct netr_DomainInformation *domain_info;/* [unique,case] */ >+ struct netr_LsaPolicyInformation *lsa_policy_info;/* [unique,case(2)] */ > }; > > struct netr_CryptPassword { >@@ -1041,8 +1053,8 @@ struct netr_LogonUasLogon { > struct netr_LogonUasLogoff { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >- const char *workstation;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ >+ const char *workstation;/* [ref,charset(UTF16)] */ > } in; > > struct { >@@ -1095,7 +1107,7 @@ struct netr_LogonSamLogoff { > struct netr_ServerReqChallenge { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Credential *credentials;/* [ref] */ > } in; > >@@ -1110,9 +1122,9 @@ struct netr_ServerReqChallenge { > struct netr_ServerAuthenticate { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Credential *credentials;/* [ref] */ > } in; > >@@ -1127,9 +1139,9 @@ struct netr_ServerAuthenticate { > struct netr_ServerPasswordSet { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > struct samr_Password *new_password;/* [ref] */ > } in; >@@ -1144,8 +1156,8 @@ struct netr_ServerPasswordSet { > > struct netr_DatabaseDeltas { > struct { >- const char *logon_server;/* [charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *logon_server;/* [ref,charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > enum netr_SamDatabaseID database_id; > uint32_t preferredmaximumlength; >@@ -1165,8 +1177,8 @@ struct netr_DatabaseDeltas { > > struct netr_DatabaseSync { > struct { >- const char *logon_server;/* [charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *logon_server;/* [ref,charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > enum netr_SamDatabaseID database_id; > uint32_t preferredmaximumlength; >@@ -1187,7 +1199,7 @@ struct netr_DatabaseSync { > struct netr_AccountDeltas { > struct { > const char *logon_server;/* [unique,charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator credential; > struct netr_UAS_INFO_0 uas; > uint32_t count; >@@ -1211,7 +1223,7 @@ struct netr_AccountDeltas { > struct netr_AccountSync { > struct { > const char *logon_server;/* [unique,charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator credential; > uint32_t reference; > uint32_t level; >@@ -1235,7 +1247,7 @@ struct netr_AccountSync { > > struct netr_GetDcName { > struct { >- const char *logon_server;/* [charset(UTF16)] */ >+ const char *logon_server;/* [ref,charset(UTF16)] */ > const char *domainname;/* [unique,charset(UTF16)] */ > } in; > >@@ -1295,9 +1307,9 @@ struct netr_LogonControl2 { > struct netr_ServerAuthenticate2 { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Credential *credentials;/* [ref] */ > uint32_t *negotiate_flags;/* [ref] */ > } in; >@@ -1313,8 +1325,8 @@ struct netr_ServerAuthenticate2 { > > struct netr_DatabaseSync2 { > struct { >- const char *logon_server;/* [charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *logon_server;/* [ref,charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > enum netr_SamDatabaseID database_id; > enum SyncStateEnum restart_state; >@@ -1335,8 +1347,8 @@ struct netr_DatabaseSync2 { > > struct netr_DatabaseRedo { > struct { >- const char *logon_server;/* [charset(UTF16)] */ >- const char *computername;/* [charset(UTF16)] */ >+ const char *logon_server;/* [ref,charset(UTF16)] */ >+ const char *computername;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > struct netr_ChangeLogEntry change_log_entry;/* [subcontext_size(change_log_entry_size),subcontext(4)] */ > uint32_t change_log_entry_size;/* [value(ndr_size_netr_ChangeLogEntry(&change_log_entry,ndr->iconv_convenience,ndr->flags))] */ >@@ -1400,7 +1412,7 @@ struct netr_DsRGetDCName { > > struct netr_LogonGetCapabilities { > struct { >- const char *server_name;/* [charset(UTF16)] */ >+ const char *server_name;/* [ref,charset(UTF16)] */ > const char *computer_name;/* [unique,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > uint32_t query_level; >@@ -1457,9 +1469,9 @@ struct netr_NETRLOGONCOMPUTECLIENTDIGEST { > struct netr_ServerAuthenticate3 { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Credential *credentials;/* [ref] */ > uint32_t *negotiate_flags;/* [ref] */ > } in; >@@ -1506,11 +1518,11 @@ struct netr_DsRGetSiteName { > > struct netr_LogonGetDomainInfo { > struct { >- const char *server_name;/* [charset(UTF16)] */ >+ const char *server_name;/* [ref,charset(UTF16)] */ > const char *computer_name;/* [unique,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > uint32_t level; >- union netr_DomainQuery query;/* [switch_is(level)] */ >+ union netr_WorkstationInfo *query;/* [ref,switch_is(level)] */ > struct netr_Authenticator *return_authenticator;/* [ref] */ > } in; > >@@ -1526,9 +1538,9 @@ struct netr_LogonGetDomainInfo { > struct netr_ServerPasswordSet2 { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > struct netr_CryptPassword *new_password;/* [ref] */ > } in; >@@ -1544,9 +1556,9 @@ struct netr_ServerPasswordSet2 { > struct netr_ServerPasswordGet { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > } in; > >@@ -1703,9 +1715,9 @@ struct netr_DsrDeregisterDNSHostRecords { > struct netr_ServerTrustPasswordsGet { > struct { > const char *server_name;/* [unique,charset(UTF16)] */ >- const char *account_name;/* [charset(UTF16)] */ >+ const char *account_name;/* [ref,charset(UTF16)] */ > enum netr_SchannelType secure_channel_type; >- const char *computer_name;/* [charset(UTF16)] */ >+ const char *computer_name;/* [ref,charset(UTF16)] */ > struct netr_Authenticator *credential;/* [ref] */ > } in; > >diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl >index 4a90c2c..141e0eb 100644 >--- a/librpc/idl/netlogon.idl >+++ b/librpc/idl/netlogon.idl >@@ -66,8 +66,8 @@ interface netlogon > > WERROR netr_LogonUasLogoff( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >- [in] [string,charset(UTF16)] uint16 workstation[], >+ [in] [string,charset(UTF16)] uint16 *account_name, >+ [in] [string,charset(UTF16)] uint16 *workstation, > [out,ref] netr_UasLogoffInfo *info > ); > >@@ -290,15 +290,15 @@ interface netlogon > } netr_Authenticator; > > NTSTATUS netr_LogonSamLogon( >- [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in,unique] [string,charset(UTF16)] uint16 *computer_name, >- [in,unique] netr_Authenticator *credential, >- [in,out,unique] netr_Authenticator *return_authenticator, >- [in] netr_LogonInfoClass logon_level, >- [in,ref] [switch_is(logon_level)] netr_LogonLevel *logon, >- [in] uint16 validation_level, >+ [in,unique] [string,charset(UTF16)] uint16 *server_name, >+ [in,unique] [string,charset(UTF16)] uint16 *computer_name, >+ [in,unique] netr_Authenticator *credential, >+ [in,out,unique] netr_Authenticator *return_authenticator, >+ [in] netr_LogonInfoClass logon_level, >+ [in,ref] [switch_is(logon_level)] netr_LogonLevel *logon, >+ [in] uint16 validation_level, > [out,ref] [switch_is(validation_level)] netr_Validation *validation, >- [out,ref] uint8 *authoritative >+ [out,ref] uint8 *authoritative > ); > > >@@ -321,7 +321,7 @@ interface netlogon > > [public] NTSTATUS netr_ServerReqChallenge( > [in,unique,string,charset(UTF16)] uint16 *server_name, >- [in,string,charset(UTF16)] uint16 computer_name[], >+ [in,string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Credential *credentials, > [out,ref] netr_Credential *return_credentials > ); >@@ -334,9 +334,9 @@ interface netlogon > > NTSTATUS netr_ServerAuthenticate( > [in,unique,string,charset(UTF16)] uint16 *server_name, >- [in,string,charset(UTF16)] uint16 account_name[], >- [in] netr_SchannelType secure_channel_type, >- [in,string,charset(UTF16)] uint16 computer_name[], >+ [in,string,charset(UTF16)] uint16 *account_name, >+ [in] netr_SchannelType secure_channel_type, >+ [in,string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Credential *credentials, > [out,ref] netr_Credential *return_credentials > ); >@@ -347,9 +347,9 @@ interface netlogon > > NTSTATUS netr_ServerPasswordSet( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [out,ref] netr_Authenticator *return_authenticator, > [in,ref] samr_Password *new_password >@@ -729,8 +729,8 @@ interface netlogon > } netr_DELTA_ENUM_ARRAY; > > NTSTATUS netr_DatabaseDeltas( >- [in] [string,charset(UTF16)] uint16 logon_server[], >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *logon_server, >+ [in] [string,charset(UTF16)] uint16 *computername, > [in,ref] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] netr_SamDatabaseID database_id, >@@ -744,8 +744,8 @@ interface netlogon > /* Function 0x08 */ > > NTSTATUS netr_DatabaseSync( >- [in] [string,charset(UTF16)] uint16 logon_server[], >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *logon_server, >+ [in] [string,charset(UTF16)] uint16 *computername, > [in,ref] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] netr_SamDatabaseID database_id, >@@ -772,7 +772,7 @@ interface netlogon > > NTSTATUS netr_AccountDeltas( > [in,unique] [string,charset(UTF16)] uint16 *logon_server, >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *computername, > [in] netr_Authenticator credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] netr_UAS_INFO_0 uas, >@@ -791,7 +791,7 @@ interface netlogon > > NTSTATUS netr_AccountSync( > [in,unique] [string,charset(UTF16)] uint16 *logon_server, >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *computername, > [in] netr_Authenticator credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] uint32 reference, >@@ -809,7 +809,7 @@ interface netlogon > /* Function 0x0B */ > > WERROR netr_GetDcName( >- [in] [string,charset(UTF16)] uint16 logon_server[], >+ [in] [string,charset(UTF16)] uint16 *logon_server, > [in,unique] [string,charset(UTF16)] uint16 *domainname, > [out,ref] [string,charset(UTF16)] uint16 **dcname > ); >@@ -881,7 +881,7 @@ interface netlogon > [in,unique] [string,charset(UTF16)] uint16 *logon_server, > [in] netr_LogonControlCode function_code, > [in] uint32 level, >- [out,ref,switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query >+ [out,ref,switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query > ); > > >@@ -957,9 +957,9 @@ interface netlogon > > NTSTATUS netr_ServerAuthenticate2( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Credential *credentials, > [out,ref] netr_Credential *return_credentials, > [in,out,ref] netr_NegotiateFlags *negotiate_flags >@@ -982,8 +982,8 @@ interface netlogon > } SyncStateEnum; > > NTSTATUS netr_DatabaseSync2( >- [in] [string,charset(UTF16)] uint16 logon_server[], >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *logon_server, >+ [in] [string,charset(UTF16)] uint16 *computername, > [in,ref] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] netr_SamDatabaseID database_id, >@@ -1024,8 +1024,8 @@ interface netlogon > } netr_ChangeLogEntry; > > NTSTATUS netr_DatabaseRedo( >- [in] [string,charset(UTF16)] uint16 logon_server[], >- [in] [string,charset(UTF16)] uint16 computername[], >+ [in] [string,charset(UTF16)] uint16 *logon_server, >+ [in] [string,charset(UTF16)] uint16 *computername, > [in] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] [subcontext(4),subcontext_size(change_log_entry_size)] netr_ChangeLogEntry change_log_entry, >@@ -1042,7 +1042,7 @@ interface netlogon > [in] netr_LogonControlCode function_code, > [in] uint32 level, > [in,ref][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION *data, >- [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query >+ [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query > ); > > /*****************/ >@@ -1153,7 +1153,7 @@ interface netlogon > } netr_Capabilities; > > NTSTATUS netr_LogonGetCapabilities( >- [in] [string,charset(UTF16)] uint16 server_name[], >+ [in] [string,charset(UTF16)] uint16 *server_name, > [in,unique] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, >@@ -1185,9 +1185,9 @@ interface netlogon > /* Function 0x1a */ > [public] NTSTATUS netr_ServerAuthenticate3( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Credential *credentials, > [out,ref] netr_Credential *return_credentials, > [in,out,ref] netr_NegotiateFlags *negotiate_flags, >@@ -1227,25 +1227,38 @@ interface netlogon > NETR_TRUST_FLAG_AES = 0x00000100 > } netr_TrustFlags; > >+ typedef [public,bitmap32bit] bitmap { >+ NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS = 0x00000001, >+ NETR_WS_FLAG_HANDLES_SPN_UPDATE = 0x00000002 >+ } netr_WorkstationFlags; >+ >+ typedef struct { >+ uint32 policy_size; >+ [size_is(policy_size)] uint8 *policy; >+ } netr_LsaPolicyInformation; >+ > typedef struct { >- netr_Blob blob; >- [string,charset(UTF16)] uint16 *workstation_domain; >- [string,charset(UTF16)] uint16 *workstation_site; >- [string,charset(UTF16)] uint16 *unknown1; >- [string,charset(UTF16)] uint16 *unknown2; >- [string,charset(UTF16)] uint16 *unknown3; >- [string,charset(UTF16)] uint16 *unknown4; >- lsa_BinaryString blob2; >- lsa_String product; >- lsa_String unknown5; >- lsa_String unknown6; >- uint32 unknown7[4]; >- } netr_DomainQuery1; >+ netr_LsaPolicyInformation lsa_policy; >+ [string,charset(UTF16)] uint16 *dns_hostname; >+ [string,charset(UTF16)] uint16 *sitename; >+ [string,charset(UTF16)] uint16 *dummy1; >+ [string,charset(UTF16)] uint16 *dummy2; >+ [string,charset(UTF16)] uint16 *dummy3; >+ [string,charset(UTF16)] uint16 *dummy4; >+ [string,charset(UTF16)] uint16 *os_version; >+ [string,charset(UTF16)] uint16 *os_name; >+ lsa_String dummy_string3; >+ lsa_String dummy_string4; >+ netr_WorkstationFlags workstation_flags; >+ uint32 dummy_long2; >+ uint32 dummy_long3; >+ uint32 dummy_long4; >+ } netr_WorkstationInformation; > > typedef union { >- [case(1)] netr_DomainQuery1 *query1; >- [case(2)] netr_DomainQuery1 *query1; >- } netr_DomainQuery; >+ [case(1)] netr_WorkstationInformation *workstation_info; >+ [case(2)] netr_WorkstationInformation *lsa_policy_info; >+ } netr_WorkstationInfo; > > typedef struct { > /* these first 3 values come from the fact windows >@@ -1268,64 +1281,62 @@ interface netlogon > > typedef struct { > lsa_String domainname; >- lsa_String fulldomainname; >- lsa_String forest; >- GUID guid; >- dom_sid2 *sid; >+ lsa_String dns_domainname; >+ lsa_String dns_forestname; >+ GUID domain_guid; >+ dom_sid2 *domain_sid; > netr_trust_extension_container trust_extension; >- lsa_String dummystring[3]; >- uint32 dummy[4]; >- } netr_DomainTrustInfo; >- >- typedef struct { >- uint32 policy_size; >- [size_is(policy_size)] uint8 *policy; >- } netr_LsaPolicyInfo; >- >- typedef [public,bitmap32bit] bitmap { >- NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS = 0x00000001, >- NETR_WS_FLAG_HANDLES_SPN_UPDATE = 0x00000002 >- } netr_WorkstationFlags; >+ lsa_String dummy_string2; >+ lsa_String dummy_string3; >+ lsa_String dummy_string4; >+ uint32 dummy_long1; >+ uint32 dummy_long2; >+ uint32 dummy_long3; >+ uint32 dummy_long4; >+ } netr_OneDomainInfo; > > typedef struct { >- netr_DomainTrustInfo domaininfo; >- uint32 num_trusts; >- [size_is(num_trusts)] netr_DomainTrustInfo *trusts; >- netr_LsaPolicyInfo lsa_policy; >+ netr_OneDomainInfo primary_domain; >+ uint32 trusted_domain_count; >+ [size_is(trusted_domain_count)] netr_OneDomainInfo *trusted_domains; >+ netr_LsaPolicyInformation lsa_policy; > lsa_String dns_hostname; >- lsa_String dummystring[3]; >+ lsa_String dummy_string2; >+ lsa_String dummy_string3; >+ lsa_String dummy_string4; > netr_WorkstationFlags workstation_flags; > uint32 supported_enc_types; >- uint32 dummy[2]; >- } netr_DomainInfo1; >+ uint32 dummy_long3; >+ uint32 dummy_long4; >+ } netr_DomainInformation; > > typedef union { >- [case(1)] netr_DomainInfo1 *info1; >- [case(2)] netr_DomainInfo1 *info2; >+ [case(1)] netr_DomainInformation *domain_info; >+ [case(2)] netr_LsaPolicyInformation *lsa_policy_info; > } netr_DomainInfo; > > NTSTATUS netr_LogonGetDomainInfo( >- [in] [string,charset(UTF16)] uint16 server_name[], >+ [in] [string,charset(UTF16)] uint16 *server_name, > [in,unique] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [in,out,ref] netr_Authenticator *return_authenticator, > [in] uint32 level, >- [in,switch_is(level)] netr_DomainQuery query, >+ [in,ref,switch_is(level)] netr_WorkstationInfo *query, > [out,ref,switch_is(level)] netr_DomainInfo *info > ); > >+ /*****************/ >+ /* Function 0x1e */ > typedef [flag(NDR_PAHEX)] struct { > uint8 data[512]; > uint32 length; > } netr_CryptPassword; > >- /*****************/ >- /* Function 0x1e */ > NTSTATUS netr_ServerPasswordSet2( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [out,ref] netr_Authenticator *return_authenticator, > [in,ref] netr_CryptPassword *new_password >@@ -1335,9 +1346,9 @@ interface netlogon > /* Function 0x1f */ > WERROR netr_ServerPasswordGet( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [out,ref] netr_Authenticator *return_authenticator, > [out,ref] samr_Password *password >@@ -1489,9 +1500,9 @@ interface netlogon > /* Function 0x2a */ > NTSTATUS netr_ServerTrustPasswordsGet( > [in,unique] [string,charset(UTF16)] uint16 *server_name, >- [in] [string,charset(UTF16)] uint16 account_name[], >+ [in] [string,charset(UTF16)] uint16 *account_name, > [in] netr_SchannelType secure_channel_type, >- [in] [string,charset(UTF16)] uint16 computer_name[], >+ [in] [string,charset(UTF16)] uint16 *computer_name, > [in,ref] netr_Authenticator *credential, > [out,ref] netr_Authenticator *return_authenticator, > [out,ref] samr_Password *password, >diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c >index dc2d078..1d65115 100644 >--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c >+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c >@@ -5,6 +5,7 @@ > > Copyright (C) Andrew Bartlett <abartlet@samba.org> 2004-2008 > Copyright (C) Stefan Metzmacher <metze@samba.org> 2005 >+ Copyright (C) Matthias Dieter Wallnöfer 2009 > > This program is free software; you can redistribute it and/or modify > it under the terms of the GNU General Public License as published by >@@ -151,8 +152,7 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca > } > > /* pull the user attributes */ >- num_records = gendb_search((struct ldb_context *)sam_ctx, >- mem_ctx, NULL, &msgs, >+ num_records = gendb_search(sam_ctx, mem_ctx, NULL, &msgs, > trust_dom_attrs, > "(&(trustPartner=%s)(objectclass=trustedDomain))", > encoded_account); >@@ -184,8 +184,7 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca > } > > /* pull the user attributes */ >- num_records = gendb_search((struct ldb_context *)sam_ctx, mem_ctx, >- NULL, &msgs, attrs, >+ num_records = gendb_search(sam_ctx, mem_ctx, NULL, &msgs, attrs, > "(&(sAMAccountName=%s)(objectclass=user))", > ldb_binary_encode_string(mem_ctx, account_name)); > >@@ -852,7 +851,7 @@ static WERROR dcesrv_netr_GetDcName(struct dcesrv_call_state *dce_call, TALLOC_C > struct netr_GetDcName *r) > { > const char * const attrs[] = { NULL }; >- void *sam_ctx; >+ struct ldb_context *sam_ctx; > struct ldb_message **res; > struct ldb_dn *domain_dn; > int ret; >@@ -865,13 +864,13 @@ static WERROR dcesrv_netr_GetDcName(struct dcesrv_call_state *dce_call, TALLOC_C > return WERR_DS_SERVICE_UNAVAILABLE; > } > >- domain_dn = samdb_domain_to_dn((struct ldb_context *)sam_ctx, mem_ctx, >+ domain_dn = samdb_domain_to_dn(sam_ctx, mem_ctx, > r->in.domainname); > if (domain_dn == NULL) { > return WERR_DS_SERVICE_UNAVAILABLE; > } > >- ret = gendb_search_dn((struct ldb_context *)sam_ctx, mem_ctx, >+ ret = gendb_search_dn(sam_ctx, mem_ctx, > domain_dn, &res, attrs); > if (ret != 1) { > return WERR_NO_SUCH_DOMAIN; >@@ -1055,14 +1054,14 @@ static WERROR dcesrv_netr_DsRGetSiteName(struct dcesrv_call_state *dce_call, TAL > > > /* >- fill in a netr_DomainTrustInfo from a ldb search result >+ fill in a netr_OneDomainInfo from a ldb search result > */ >-static NTSTATUS fill_domain_trust_info(TALLOC_CTX *mem_ctx, >- struct loadparm_context *lp_ctx, >- struct ldb_context *sam_ctx, >- struct ldb_message *res, >- struct netr_DomainTrustInfo *info, >- bool is_local, bool is_trust_list) >+static NTSTATUS fill_one_domain_info(TALLOC_CTX *mem_ctx, >+ struct loadparm_context *lp_ctx, >+ struct ldb_context *sam_ctx, >+ struct ldb_message *res, >+ struct netr_OneDomainInfo *info, >+ bool is_local, bool is_trust_list) > { > ZERO_STRUCTP(info); > >@@ -1080,15 +1079,15 @@ static NTSTATUS fill_domain_trust_info(TALLOC_CTX *mem_ctx, > > if (is_trust_list) { > /* MS-NRPC 3.5.4.3.9 - must be set to NULL for trust list */ >- info->forest.string = NULL; >+ info->dns_forestname.string = NULL; > } else { > char *p; > /* TODO: we need a common function for pulling the forest */ >- info->forest.string = ldb_dn_canonical_string(info, ldb_get_root_basedn(sam_ctx)); >- if (!info->forest.string) { >+ info->dns_forestname.string = ldb_dn_canonical_string(info, ldb_get_root_basedn(sam_ctx)); >+ if (!info->dns_forestname.string) { > return NT_STATUS_NO_SUCH_DOMAIN; > } >- p = strchr(info->forest.string, '/'); >+ p = strchr(info->dns_forestname.string, '/'); > if (p) { > *p = '\0'; > } >@@ -1096,14 +1095,14 @@ static NTSTATUS fill_domain_trust_info(TALLOC_CTX *mem_ctx, > > if (is_local) { > info->domainname.string = lp_sam_name(lp_ctx); >- info->fulldomainname.string = lp_realm(lp_ctx); >- info->guid = samdb_result_guid(res, "objectGUID"); >- info->sid = samdb_result_dom_sid(mem_ctx, res, "objectSid"); >+ info->dns_domainname.string = lp_realm(lp_ctx); >+ info->domain_guid = samdb_result_guid(res, "objectGUID"); >+ info->domain_sid = samdb_result_dom_sid(mem_ctx, res, "objectSid"); > } else { > info->domainname.string = samdb_result_string(res, "flatName", NULL); >- info->fulldomainname.string = samdb_result_string(res, "trustPartner", NULL); >- info->guid = samdb_result_guid(res, "objectGUID"); >- info->sid = samdb_result_dom_sid(mem_ctx, res, "securityIdentifier"); >+ info->dns_domainname.string = samdb_result_string(res, "trustPartner", NULL); >+ info->domain_guid = samdb_result_guid(res, "objectGUID"); >+ info->domain_sid = samdb_result_dom_sid(mem_ctx, res, "securityIdentifier"); > } > > return NT_STATUS_OK; >@@ -1116,15 +1115,16 @@ static NTSTATUS fill_domain_trust_info(TALLOC_CTX *mem_ctx, > It has an important role in convaying details about the client, such > as Operating System, Version, Service Pack etc. > */ >-static NTSTATUS dcesrv_netr_LogonGetDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, >- struct netr_LogonGetDomainInfo *r) >+static NTSTATUS dcesrv_netr_LogonGetDomainInfo(struct dcesrv_call_state *dce_call, >+ TALLOC_CTX *mem_ctx, struct netr_LogonGetDomainInfo *r) > { >- const char * const attrs[] = { "objectSid", >- "objectGUID", "flatName", "securityIdentifier", >- "trustPartner", NULL }; >+ const char * const attrs[] = { "objectSid", "objectGUID", "flatName", >+ "securityIdentifier", "trustPartner", NULL }; >+ const char *host_account_name; > struct ldb_context *sam_ctx; > struct ldb_message **res1, **res2; >- struct netr_DomainInfo1 *info1; >+ struct netr_DomainInformation *domain_info; >+ struct netr_LsaPolicyInformation *lsa_policy_info; > int ret1, ret2, i; > NTSTATUS status; > >@@ -1141,59 +1141,135 @@ static NTSTATUS dcesrv_netr_LogonGetDomainInfo(struct dcesrv_call_state *dce_cal > } > NT_STATUS_NOT_OK_RETURN(status); > >- sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info); >+ >+ sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, >+ dce_call->conn->dce_ctx->lp_ctx, >+ system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx)); > if (sam_ctx == NULL) { > return NT_STATUS_INVALID_SYSTEM_SERVICE; > } > >- /* we need to do two searches. The first will pull our primary >- domain and the second will pull any trusted domains. Our >- primary domain is also a "trusted" domain, so we need to >- put the primary domain into the lists of returned trusts as >- well */ >- ret1 = gendb_search_dn(sam_ctx, mem_ctx, samdb_base_dn(sam_ctx), &res1, attrs); >- if (ret1 != 1) { >- return NT_STATUS_INTERNAL_DB_CORRUPTION; >- } >+ switch (r->in.level) { >+ case 1: /* Domain information */ > >- /* try and find the domain */ >- local_domain = lp_sam_name(dce_call->conn->dce_ctx->lp_ctx); >+ /* Get host informations and save/update them in our directory */ > >- ret2 = gendb_search(sam_ctx, mem_ctx, NULL, &res2, attrs, "(objectClass=trustedDomain)"); >- if (ret2 == -1) { >- return NT_STATUS_INTERNAL_DB_CORRUPTION; >- } >+ host_account_name = talloc_asprintf(mem_ctx, "%s$", r->in.computer_name); >+ >+ if (!host_account_name) { >+ return NT_STATUS_NO_MEMORY; >+ } >+ >+ ret1 = gendb_search(sam_ctx, mem_ctx, NULL, &res1, NULL, >+ "(&(sAMAccountName=%s)(objectclass=computer))", >+ ldb_binary_encode_string(mem_ctx, host_account_name)); >+ >+ if (ret1 == 0) { >+ DEBUG(3,("Couldn't find computer [%s] in samdb.\n", >+ host_account_name)); >+ return NT_STATUS_INTERNAL_DB_CORRUPTION; >+ } > >- info1 = talloc(mem_ctx, struct netr_DomainInfo1); >- NT_STATUS_HAVE_NO_MEMORY(info1); >+ if (ret1 > 1) { >+ DEBUG(0,("Found %d records matching computer [%s]\n", >+ ret1, host_account_name)); >+ return NT_STATUS_INTERNAL_DB_CORRUPTION; >+ } > >- ZERO_STRUCTP(info1); >+ *res2 = ldb_msg_new(mem_ctx); >+ (*res2)->dn = ldb_dn_copy(mem_ctx, (*res1)->dn); > >- info1->num_trusts = ret2 + 1; >- info1->trusts = talloc_array(mem_ctx, struct netr_DomainTrustInfo, >- info1->num_trusts); >- NT_STATUS_HAVE_NO_MEMORY(info1->trusts); >+ talloc_free(*res1); > >- status = fill_domain_trust_info(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, sam_ctx, res1[0], &info1->domaininfo, >- true, false); >- NT_STATUS_NOT_OK_RETURN(status); >+ ldb_msg_add_string(*res2, "dNSHostName", >+ r->in.query->workstation_info->dns_hostname); >+ ldb_msg_add_string(*res2, "operatingSystem", >+ r->in.query->workstation_info->os_name); >+ ldb_msg_add_string(*res2, "operatingSystemVersion", >+ r->in.query->workstation_info->os_version); >+ for (i = 0; i < (*res2)->num_elements; i++) >+ (*res2)->elements[i].flags = LDB_FLAG_MOD_REPLACE; >+ >+ if (ldb_modify(sam_ctx, *res2) != LDB_SUCCESS) { >+ DEBUG(3,("Impossible to update samdb: %s\n", >+ ldb_errstring(sam_ctx))); >+ } >+ >+ talloc_free(*res2); >+ >+ /* Writes back the domain information */ >+ >+ /* we need to do two searches. The first will pull our primary >+ domain and the second will pull any trusted domains. Our >+ primary domain is also a "trusted" domain, so we need to >+ put the primary domain into the lists of returned trusts as >+ well */ >+ ret1 = gendb_search_dn(sam_ctx, mem_ctx, samdb_base_dn(sam_ctx), >+ &res1, attrs); >+ if (ret1 != 1) { >+ return NT_STATUS_INTERNAL_DB_CORRUPTION; >+ } >+ >+ /* try and find the domain */ >+ local_domain = lp_sam_name(dce_call->conn->dce_ctx->lp_ctx); >+ >+ ret2 = gendb_search(sam_ctx, mem_ctx, NULL, &res2, attrs, >+ "(objectClass=trustedDomain)"); >+ if (ret2 == -1) { >+ return NT_STATUS_INTERNAL_DB_CORRUPTION; >+ } > >- for (i=0;i<ret2;i++) { >- status = fill_domain_trust_info(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, sam_ctx, res2[i], &info1->trusts[i], >- false, true); >+ domain_info = talloc(mem_ctx, struct netr_DomainInformation); >+ NT_STATUS_HAVE_NO_MEMORY(domain_info); >+ >+ ZERO_STRUCTP(domain_info); >+ >+ status = fill_one_domain_info(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, >+ sam_ctx, res1[0], &domain_info->primary_domain, true, false); > NT_STATUS_NOT_OK_RETURN(status); >- } > >- status = fill_domain_trust_info(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, sam_ctx, res1[0], &info1->trusts[i], >- true, true); >- NT_STATUS_NOT_OK_RETURN(status); >+ domain_info->trusted_domain_count = ret2 + 1; >+ domain_info->trusted_domains = talloc_array(mem_ctx, >+ struct netr_OneDomainInfo, domain_info->trusted_domain_count); >+ NT_STATUS_HAVE_NO_MEMORY(domain_info->trusted_domains); > >- info1->dns_hostname.string = lp_realm(dce_call->conn->dce_ctx->lp_ctx); >- info1->workstation_flags = >- NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS | NETR_WS_FLAG_HANDLES_SPN_UPDATE; >- info1->supported_enc_types = 0; /* w2008 gives this 0 */ >+ for (i=0;i<ret2;i++) { >+ status = fill_one_domain_info(mem_ctx, >+ dce_call->conn->dce_ctx->lp_ctx, sam_ctx, res2[i], >+ &domain_info->trusted_domains[i], false, true); >+ NT_STATUS_NOT_OK_RETURN(status); >+ } > >- r->out.info->info1 = info1; >+ status = fill_one_domain_info(mem_ctx, >+ dce_call->conn->dce_ctx->lp_ctx, sam_ctx, res1[0], >+ &domain_info->trusted_domains[i], true, true); >+ NT_STATUS_NOT_OK_RETURN(status); >+ >+ lsa_policy_info = talloc(mem_ctx, struct netr_LsaPolicyInformation); >+ NT_STATUS_HAVE_NO_MEMORY(lsa_policy_info); >+ ZERO_STRUCTP(lsa_policy_info); >+ domain_info->lsa_policy = *lsa_policy_info; >+ >+ domain_info->dns_hostname.string = >+ lp_realm(dce_call->conn->dce_ctx->lp_ctx); >+ domain_info->workstation_flags = >+ NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS | NETR_WS_FLAG_HANDLES_SPN_UPDATE; >+ domain_info->supported_enc_types = 0; /* w2008 gives this 0 */ >+ >+ r->out.info->domain_info = domain_info; >+ break; >+ case 2: /* LSA policy information - not used at the moment */ >+ lsa_policy_info = talloc(mem_ctx, struct netr_LsaPolicyInformation); >+ NT_STATUS_HAVE_NO_MEMORY(lsa_policy_info); >+ >+ ZERO_STRUCTP(lsa_policy_info); >+ >+ r->out.info->lsa_policy_info = lsa_policy_info; >+ break; >+ default: >+ return NT_STATUS_INVALID_LEVEL; >+ break; >+ } > > return NT_STATUS_OK; > } >@@ -1401,7 +1477,7 @@ static WERROR dcesrv_netr_DsrEnumerateDomainTrusts(struct dcesrv_call_state *dce > struct netr_DsrEnumerateDomainTrusts *r) > { > struct netr_DomainTrustList *trusts; >- void *sam_ctx; >+ struct ldb_context *sam_ctx; > int ret; > struct ldb_message **dom_res; > const char * const dom_attrs[] = { "objectSid", "objectGUID", NULL }; >@@ -1413,7 +1489,7 @@ static WERROR dcesrv_netr_DsrEnumerateDomainTrusts(struct dcesrv_call_state *dce > return WERR_GENERAL_FAILURE; > } > >- ret = gendb_search_dn((struct ldb_context *)sam_ctx, mem_ctx, NULL, >+ ret = gendb_search_dn(sam_ctx, mem_ctx, NULL, > &dom_res, dom_attrs); > if (ret == -1) { > return WERR_GENERAL_FAILURE;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 4888
:
4357
|
4375
|
4376
|
4383
|
4399
|
4411
|
4452
|
4453
|
4454
|
4469
|
4470