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_1num_trusts;cntr_trusts_1++) { + for (cntr_trusted_domains_1=0;cntr_trusted_domains_1trusted_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..50493d6 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 2004-2008 Copyright (C) Stefan Metzmacher 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 }; + struct netlogon_creds_CredentialState *creds; + const char * const attrs[] = { "objectSid", "objectGUID", "flatName", + "securityIdentifier", "trustPartner", NULL }; 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; @@ -1135,65 +1135,116 @@ static NTSTATUS dcesrv_netr_LogonGetDomainInfo(struct dcesrv_call_state *dce_cal r->in.computer_name, r->in.credential, r->out.return_authenticator, - NULL); + &creds); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,(__location__ " Bad credentials - error\n")); } 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; - } + *res2 = ldb_msg_new(mem_ctx); + (*res2)->dn = ldb_dn_new_fmt(mem_ctx, sam_ctx, "", + dom_sid_string(mem_ctx, creds->sid)); + + samdb_msg_add_string(sam_ctx, mem_ctx, *res2, "dNSHostName", + r->in.query->workstation_info->dns_hostname); + samdb_msg_add_string(sam_ctx, mem_ctx, *res2, "operatingSystem", + r->in.query->workstation_info->os_name); + samdb_msg_add_string(sam_ctx, mem_ctx, *res2, + "operatingSystemVersion", + r->in.query->workstation_info->os_version); - info1 = talloc(mem_ctx, struct netr_DomainInfo1); - NT_STATUS_HAVE_NO_MEMORY(info1); + if (samdb_replace(sam_ctx, mem_ctx, *res2) != LDB_SUCCESS) { + DEBUG(3,("Impossible to update samdb: %s\n", + ldb_errstring(sam_ctx))); + } - ZERO_STRUCTP(info1); + talloc_free(*res2); - info1->num_trusts = ret2 + 1; - info1->trusts = talloc_array(mem_ctx, struct netr_DomainTrustInfo, - info1->num_trusts); - NT_STATUS_HAVE_NO_MEMORY(info1->trusts); + /* Writes back the domain information */ - 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); + /* 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; + } + + domain_info = talloc(mem_ctx, struct netr_DomainInformation); + NT_STATUS_HAVE_NO_MEMORY(domain_info); + + ZERO_STRUCTP(domain_info); - for (i=0;iconn->dce_ctx->lp_ctx, sam_ctx, res2[i], &info1->trusts[i], - false, true); + 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); + + for (i=0;iconn->dce_ctx->lp_ctx, sam_ctx, res2[i], + &domain_info->trusted_domains[i], false, true); + NT_STATUS_NOT_OK_RETURN(status); + } - 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 */ + 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); - r->out.info->info1 = info1; + 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 +1452,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 +1464,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;