bool interactive,
uint8_t *authoritative,
uint32_t *flags,
- struct netr_SamInfo3 **info3)
+ uint16_t *_validation_level,
+ union netr_Validation **_validation)
{
int attempts = 0;
int netr_attempts = 0;
do {
struct rpc_pipe_client *netlogon_pipe;
- ZERO_STRUCTP(info3);
retry = false;
result = cm_connect_netlogon(domain, &netlogon_pipe);
return result;
}
- result = map_validation_to_info3(mem_ctx,
- validation_level,
- validation,
- info3);
- TALLOC_FREE(validation);
- if (!NT_STATUS_IS_OK(result)) {
- return result;
- }
-
+ *_validation_level = validation_level;
+ *_validation = validation;
return NT_STATUS_OK;
}
struct netr_SamInfo3 *my_info3 = NULL;
uint8_t authoritative = 0;
uint32_t flags = 0;
+ uint16_t validation_level;
+ union netr_Validation *validation = NULL;
*info3 = NULL;
true, /* interactive */
&authoritative,
&flags,
- &my_info3);
+ &validation_level,
+ &validation);
if (!NT_STATUS_IS_OK(result)) {
goto done;
}
+ result = map_validation_to_info3(mem_ctx,
+ validation_level,
+ validation,
+ &my_info3);
+ TALLOC_FREE(validation);
+ if (!NT_STATUS_IS_OK(result)) {
+ return result;
+ }
+
/* handle the case where a NT4 DC does not fill in the acct_flags in
* the samlogon reply info3. When accurate info3 is required by the
* caller, we look up the account flags ourselves - gd */
uint32_t *flags,
struct netr_SamInfo3 **info3)
{
+ uint16_t validation_level;
+ union netr_Validation *validation = NULL;
NTSTATUS result;
/*
false, /* interactive */
authoritative,
flags,
- info3);
+ &validation_level,
+ &validation);
if (!NT_STATUS_IS_OK(result)) {
goto done;
}
+ result = map_validation_to_info3(mem_ctx,
+ validation_level,
+ validation,
+ info3);
+ TALLOC_FREE(validation);
+ if (!NT_STATUS_IS_OK(result)) {
+ return result;
+ }
+
process_result:
if (NT_STATUS_IS_OK(result)) {