svn commit: samba r20068 - in branches/SAMBA_4_0/source/libnet: .
metze at samba.org
metze at samba.org
Thu Dec 7 19:18:56 GMT 2006
Author: metze
Date: 2006-12-07 19:18:55 +0000 (Thu, 07 Dec 2006)
New Revision: 20068
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20068
Log:
handle DsAddEntry() errors
metze
Modified:
branches/SAMBA_4_0/source/libnet/libnet_become_dc.c
Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet_become_dc.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_become_dc.c 2006-12-07 15:33:24 UTC (rev 20067)
+++ branches/SAMBA_4_0/source/libnet/libnet_become_dc.c 2006-12-07 19:18:55 UTC (rev 20068)
@@ -102,6 +102,7 @@
const char *computer_dn_str;
const char *server_dn_str;
const char *ntds_dn_str;
+ struct GUID ntds_guid;
struct GUID invocation_id;
uint32_t user_account_control;
} dest_dsa;
@@ -1404,6 +1405,57 @@
return;
}
+ if (r->out.level == 3) {
+ if (r->out.ctr.ctr3.count != 1) {
+ WERROR status;
+
+ if (r->out.ctr.ctr3.level != 1) {
+ composite_error(c, NT_STATUS_INVALID_NETWORK_RESPONSE);
+ return;
+ }
+
+ if (!r->out.ctr.ctr3.error) {
+ composite_error(c, NT_STATUS_INVALID_NETWORK_RESPONSE);
+ return;
+ }
+
+ status = r->out.ctr.ctr3.error->info1.status;
+
+ if (!r->out.ctr.ctr3.error->info1.info) {
+ composite_error(c, werror_to_ntstatus(status));
+ return;
+ }
+
+ /* see if we can get a more detailed error */
+ switch (r->out.ctr.ctr3.error->info1.level) {
+ case 1:
+ status = r->out.ctr.ctr3.error->info1.info->error1.status;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ status = r->out.ctr.ctr3.error->info1.info->errorX.status;
+ break;
+ }
+
+ composite_error(c, werror_to_ntstatus(status));
+ return;
+ }
+
+ s->dest_dsa.ntds_guid = r->out.ctr.ctr3.objects[0].guid;
+ } else if (r->out.level == 2) {
+ if (r->out.ctr.ctr2.count != 1) {
+ composite_error(c, werror_to_ntstatus(r->out.ctr.ctr2.error.status));
+ return;
+ }
+
+ s->dest_dsa.ntds_guid = r->out.ctr.ctr2.objects[0].guid;
+ } else {
+ composite_error(c, NT_STATUS_INVALID_NETWORK_RESPONSE);
+ return;
+ }
+
becomeDC_connect_ldap2(s);
}
More information about the samba-cvs
mailing list