NTSTATUS create_builtin_administrators(const struct dom_sid *dom_sid) { NTSTATUS status; struct dom_sid dom_admins, root_sid; fstring root_name; enum lsa_SidType type; TALLOC_CTX *ctx; bool ret; status = create_builtin(BUILTIN_RID_ADMINISTRATORS); if ( !NT_STATUS_IS_OK(status) ) { DEBUG(5,("create_builtin_administrators: Failed to create Administrators\n")); return status; } /* add domain admins */ if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER)) && sid_compose(&dom_admins, dom_sid, DOMAIN_RID_ADMINS)) { status = add_sid_to_builtin(&global_sid_Builtin_Administrators, &dom_admins); if (!NT_STATUS_IS_OK(status)) { return status; } } /* add root */ if ( (ctx = talloc_init("create_builtin_administrators")) == NULL ) { return NT_STATUS_NO_MEMORY; } fstr_sprintf( root_name, "%s\\root", get_global_sam_name() ); ret = lookup_name(ctx, root_name, LOOKUP_NAME_DOMAIN, NULL, NULL, &root_sid, &type); TALLOC_FREE( ctx ); if ( ret ) { status = add_sid_to_builtin(&global_sid_Builtin_Administrators, &root_sid); } return status; }
NTSTATUS create_builtin_users(const struct dom_sid *dom_sid) { NTSTATUS status; struct dom_sid dom_users; status = create_builtin(BUILTIN_RID_USERS); if ( !NT_STATUS_IS_OK(status) ) { DEBUG(5,("create_builtin_users: Failed to create Users\n")); return status; } /* add domain users */ if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER)) && sid_compose(&dom_users, dom_sid, DOMAIN_RID_USERS)) { status = add_sid_to_builtin(&global_sid_Builtin_Users, &dom_users); } return status; }
} else { if (min > max) { int t = min; min = max; max = t; } else if (min == max) { return create_number(min); } size_t st = twist_state.genrand_int32(); return create_number(min + int(st % (max - min))); } } return NONE; } DexRef DFUNC_RAND = create_builtin(&builtin_rand, "rand"); static DexRef builtin_max(DexRef* args, size_t n) { if (n == 0) return NONE; DexRef best = args[0]; for (int i = 1; i < n; i++) { if (best < args[i]) best = args[i]; } if (error()) { stack_trace("max", DSTR_MATHCPP); return NONE; } else return best; }