diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libnet/libnet_proto.h | 3 | ||||
-rw-r--r-- | source3/libnet/libnet_samsync.c | 38 | ||||
-rw-r--r-- | source3/utils/net_rpc_samsync.c | 34 |
3 files changed, 41 insertions, 34 deletions
diff --git a/source3/libnet/libnet_proto.h b/source3/libnet/libnet_proto.h index b30b94a54b..6f150d1579 100644 --- a/source3/libnet/libnet_proto.h +++ b/source3/libnet/libnet_proto.h @@ -59,4 +59,7 @@ NTSTATUS samsync_process_database(struct rpc_pipe_client *pipe_hnd, enum netr_SamDatabaseID database_id, samsync_fn_t callback_fn, struct samsync_context *ctx); +NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx, + struct lsa_BinaryString *r, + struct netr_AcctLockStr **str_p); #endif /* _LIBNET_PROTO_H_ */ diff --git a/source3/libnet/libnet_samsync.c b/source3/libnet/libnet_samsync.c index c86c5c12e1..fab77e8398 100644 --- a/source3/libnet/libnet_samsync.c +++ b/source3/libnet/libnet_samsync.c @@ -375,3 +375,41 @@ NTSTATUS samsync_process_database(struct rpc_pipe_client *pipe_hnd, return result; } + +/** + * pull_netr_AcctLockStr + */ + +NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx, + struct lsa_BinaryString *r, + struct netr_AcctLockStr **str_p) +{ + struct netr_AcctLockStr *str; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + + if (!mem_ctx || !r || !str_p) { + return NT_STATUS_INVALID_PARAMETER; + } + + *str_p = NULL; + + str = TALLOC_ZERO_P(mem_ctx, struct netr_AcctLockStr); + if (!str) { + return NT_STATUS_NO_MEMORY; + } + + blob = data_blob_const(r->array, r->length); + + ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, str, + (ndr_pull_flags_fn_t)ndr_pull_netr_AcctLockStr); + + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + return ndr_map_error2ntstatus(ndr_err); + } + + *str_p = str; + + return NT_STATUS_OK; +} + diff --git a/source3/utils/net_rpc_samsync.c b/source3/utils/net_rpc_samsync.c index d945be76f1..2ac49270a7 100644 --- a/source3/utils/net_rpc_samsync.c +++ b/source3/utils/net_rpc_samsync.c @@ -84,40 +84,6 @@ static void display_account_info(uint32_t rid, pdb_encode_acct_ctrl(r->acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)); } -static NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx, - struct lsa_BinaryString *r, - struct netr_AcctLockStr **str_p) -{ - struct netr_AcctLockStr *str; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - - if (!mem_ctx || !r || !str_p) { - return NT_STATUS_INVALID_PARAMETER; - } - - *str_p = NULL; - - str = TALLOC_ZERO_P(mem_ctx, struct netr_AcctLockStr); - if (!str) { - return NT_STATUS_NO_MEMORY; - } - - blob = data_blob_const(r->array, r->length); - - ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, str, - (ndr_pull_flags_fn_t)ndr_pull_netr_AcctLockStr); - data_blob_free(&blob); - - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - return ndr_map_error2ntstatus(ndr_err); - } - - *str_p = str; - - return NT_STATUS_OK; -} - static void display_domain_info(struct netr_DELTA_DOMAIN *r) { time_t u_logout; |