/* Function: 0x20 */
- NTSTATUS lsa_LookupPrivName (
+ NTSTATUS lsa_LookupPrivName(
[in] policy_handle *handle,
[in,ref] lsa_LUID *luid,
[out,ref] lsa_StringLarge **name
/* Function: 0x20 */
- NTSTATUS lsa_LookupPrivName (
+ NTSTATUS lsa_LookupPrivName(
[in] policy_handle *handle,
- [in] lsa_LUID *luid,
- [out,unique] lsa_StringLarge *name
+ [in,ref] lsa_LUID *luid,
+ [out,ref] lsa_StringLarge **name
);
{
struct dcesrv_handle *h;
struct lsa_policy_state *state;
+ struct lsa_StringLarge *name;
const char *privname;
DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
return NT_STATUS_NO_SUCH_PRIVILEGE;
}
- r->out.name = talloc(mem_ctx, struct lsa_StringLarge);
- if (r->out.name == NULL) {
+ name = talloc(mem_ctx, struct lsa_StringLarge);
+ if (name == NULL) {
return NT_STATUS_NO_MEMORY;
}
- r->out.name->string = privname;
+
+ name->string = privname;
+
+ *r->out.name = name;
return NT_STATUS_OK;
}
{
NTSTATUS status;
struct lsa_LookupPrivName r;
+ struct lsa_StringLarge *name = NULL;
r.in.handle = handle;
r.in.luid = luid;
+ r.out.name = &name;
status = dcerpc_lsa_LookupPrivName(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
if (!NT_STATUS_IS_OK(status)) {
struct lsa_LookupPrivName r_name;
+ struct lsa_StringLarge *name = NULL;
r_name.in.handle = handle;
r_name.in.luid = luid;
-
+ r_name.out.name = &name;
+
status = dcerpc_lsa_LookupPrivName(p, mem_ctx, &r_name);
if (!NT_STATUS_IS_OK(status)) {
printf("\nLookupPrivName failed - %s\n", nt_errstr(status));
return false;
}
/* Windows 2008 does not allow this to be removed */
- if (strcmp("SeAuditPrivilege", r_name.out.name->string) == 0) {
+ if (strcmp("SeAuditPrivilege", name->string) == 0) {
return ret;
}
printf("RemovePrivilegesFromAccount failed to remove %s - %s\n",
- r_name.out.name->string,
+ name->string,
nt_errstr(status));
return false;
}
TEST_INT_EQUAL(account->privilege_entries, privs->count);
for (i=0;i< privs->count; i++) {
+
+ struct lsa_StringLarge *name = NULL;
+
r.in.handle = samsync_state->lsa_handle;
r.in.luid = &privs->set[i].luid;
+ r.out.name = &name;
status = dcerpc_lsa_LookupPrivName(samsync_state->p_lsa, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
return false;
}
for (j=0;j<account->privilege_entries; j++) {
- if (strcmp(r.out.name->string, account->privilege_name[j].string) == 0) {
+ if (strcmp(name->string, account->privilege_name[j].string) == 0) {
found_priv_in_lsa[j] = true;
break;
}