mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +03:00
s4/drs: DsAddEntry - extending error handling for V2 replies
After having more complete definition for DsAddEntryReply V2 structure, we can now handle error state in more robust way, not just counting on number of objects returned.
This commit is contained in:
parent
fbc1528649
commit
427a1f3c62
@ -2324,11 +2324,24 @@ static void becomeDC_drsuapi1_add_entry_recv(struct tevent_req *subreq)
|
||||
|
||||
s->dest_dsa.ntds_guid = r->out.ctr->ctr3.objects[0].guid;
|
||||
} else if (*r->out.level_out == 2) {
|
||||
if (r->out.ctr->ctr2.count != 1) {
|
||||
composite_error(c, werror_to_ntstatus(r->out.ctr->ctr2.error.extended_err));
|
||||
if (DRSUAPI_DIRERR_OK != r->out.ctr->ctr2.dir_err) {
|
||||
DEBUG(0,("DsAddEntry failed with: dir_err = %d, extended_err = %s",
|
||||
r->out.ctr->ctr2.dir_err,
|
||||
win_errstr(r->out.ctr->ctr2.extended_err)));
|
||||
composite_error(c, werror_to_ntstatus(r->out.ctr->ctr2.extended_err));
|
||||
return;
|
||||
}
|
||||
|
||||
if (1 != r->out.ctr->ctr2.count) {
|
||||
DEBUG(0,("DsAddEntry: something very wrong had happened - "
|
||||
"method succeeded but objects returned are %d (expected 1). "
|
||||
"Errors: dir_err = %d, extended_err = %s",
|
||||
r->out.ctr->ctr2.count,
|
||||
r->out.ctr->ctr2.dir_err,
|
||||
win_errstr(r->out.ctr->ctr2.extended_err)));
|
||||
composite_error(c, NT_STATUS_INVALID_NETWORK_RESPONSE);
|
||||
}
|
||||
|
||||
s->dest_dsa.ntds_guid = r->out.ctr->ctr2.objects[0].guid;
|
||||
} else {
|
||||
composite_error(c, NT_STATUS_INVALID_NETWORK_RESPONSE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user