/****************************************************************
****************************************************************/
+static uint32_t samr_acb_flags_to_netapi_flags(uint32_t acb)
+{
+ uint32_t fl = UF_SCRIPT; /* god knows why */
+
+ fl |= ads_acb2uf(acb);
+
+ return fl;
+}
+
+/****************************************************************
+****************************************************************/
+
static NTSTATUS libnetapi_samr_lookup_user_map_USER_INFO(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *pipe_cli,
struct dom_sid *domain_sid,
switch (level) {
case 10:
- info10.usri10_name = talloc_strdup(mem_ctx, user_name);
+ info10.usri10_name = talloc_strdup(mem_ctx,
+ info21->account_name.string);
NT_STATUS_HAVE_NO_MEMORY(info10.usri10_name);
info10.usri10_comment = talloc_strdup(mem_ctx,
break;
case 20:
- info20.usri20_name = talloc_strdup(mem_ctx, user_name);
+ info20.usri20_name = talloc_strdup(mem_ctx,
+ info21->account_name.string);
NT_STATUS_HAVE_NO_MEMORY(info20.usri20_name);
info20.usri20_comment = talloc_strdup(mem_ctx,
info20.usri20_full_name = talloc_strdup(mem_ctx,
info21->full_name.string);
- info20.usri20_flags = info21->acct_flags;
+ info20.usri20_flags =
+ samr_acb_flags_to_netapi_flags(info21->acct_flags);
info20.usri20_user_id = rid;
ADD_TO_ARRAY(mem_ctx, struct USER_INFO_20, info20,
break;
case 23:
- info23.usri23_name = talloc_strdup(mem_ctx, user_name);
+ info23.usri23_name = talloc_strdup(mem_ctx,
+ info21->account_name.string);
NT_STATUS_HAVE_NO_MEMORY(info23.usri23_name);
info23.usri23_comment = talloc_strdup(mem_ctx,
info23.usri23_full_name = talloc_strdup(mem_ctx,
info21->full_name.string);
- info23.usri23_flags = info21->acct_flags;
+ info23.usri23_flags =
+ samr_acb_flags_to_netapi_flags(info21->acct_flags);
if (!sid_compose(&sid, domain_sid, rid)) {
return NT_STATUS_NO_MEMORY;
switch (r->in.level) {
case 0:
- /* case 1: */
case 10:
case 20:
case 23:
break;
- default:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 11:
werr = WERR_NOT_SUPPORTED;
goto done;
+ default:
+ werr = WERR_UNKNOWN_LEVEL;
+ goto done;
}
werr = libnetapi_open_pipe(ctx, r->in.server_name,