1
0
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:
Kamen Mazdrashki 2010-03-12 13:42:05 +02:00
parent fbc1528649
commit 427a1f3c62

View File

@ -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);