svn commit: samba r19902 - in branches/SAMBA_4_0/source/rpc_server/samr: .

metze at samba.org metze at samba.org
Sat Nov 25 18:57:47 GMT 2006


Author: metze
Date: 2006-11-25 18:57:47 +0000 (Sat, 25 Nov 2006)
New Revision: 19902

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19902

Log:
give better errors...

metze
Modified:
   branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2006-11-25 17:19:42 UTC (rev 19901)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2006-11-25 18:57:47 UTC (rev 19902)
@@ -944,9 +944,24 @@
 			     
 	/* create the group */
 	ret = samdb_add(d_state->sam_ctx, mem_ctx, msg);
-	if (ret != 0) {
-		DEBUG(0,("Failed to create group record %s\n",
-			 ldb_dn_get_linearized(msg->dn)));
+	switch (ret) {
+	case  LDB_SUCCESS:
+		break;
+	case  LDB_ERR_ENTRY_ALREADY_EXISTS:
+		ldb_transaction_cancel(d_state->sam_ctx);
+		DEBUG(0,("Failed to create group record %s: %s\n",
+			 ldb_dn_get_linearized(msg->dn),
+			 ldb_errstring(d_state->sam_ctx)));
+		return NT_STATUS_GROUP_EXISTS;
+	case  LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
+		DEBUG(0,("Failed to create group record %s: %s\n",
+			 ldb_dn_get_linearized(msg->dn),
+			 ldb_errstring(d_state->sam_ctx)));
+		return NT_STATUS_ACCESS_DENIED;
+	default:
+		DEBUG(0,("Failed to create group record %s: %s\n",
+			 ldb_dn_get_linearized(msg->dn),
+			 ldb_errstring(d_state->sam_ctx)));
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
 
@@ -1219,6 +1234,12 @@
 			 ldb_dn_get_linearized(msg->dn),
 			 ldb_errstring(d_state->sam_ctx)));
 		return NT_STATUS_USER_EXISTS;
+	case  LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
+		ldb_transaction_cancel(d_state->sam_ctx);
+		DEBUG(0,("Failed to create user record %s: %s\n",
+			 ldb_dn_get_linearized(msg->dn),
+			 ldb_errstring(d_state->sam_ctx)));
+		return NT_STATUS_ACCESS_DENIED;
 	default:
 		ldb_transaction_cancel(d_state->sam_ctx);
 		DEBUG(0,("Failed to create user record %s: %s\n",
@@ -1250,6 +1271,8 @@
 	sid = samdb_result_dom_sid(mem_ctx, msgs[0], "objectSid");
 	if (sid == NULL) {
 		ldb_transaction_cancel(d_state->sam_ctx);
+		DEBUG(0,("Apparently we failed to get the objectSid of the just created account record %s\n",
+			 ldb_dn_get_linearized(msg->dn)));
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
 
@@ -1482,6 +1505,8 @@
 		break;
 	case LDB_ERR_ENTRY_ALREADY_EXISTS:
 		return NT_STATUS_ALIAS_EXISTS;
+	case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
+		return NT_STATUS_ACCESS_DENIED;
 	default:
 		DEBUG(0,("Failed to create alias record %s: %s\n",
 			 ldb_dn_get_linearized(msg->dn),
@@ -2124,6 +2149,8 @@
 		return NT_STATUS_OK;
 	case LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS:
 		return NT_STATUS_MEMBER_IN_GROUP;
+	case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
+		return NT_STATUS_ACCESS_DENIED;
 	default:
 		return NT_STATUS_UNSUCCESSFUL;
 	}
@@ -2228,6 +2255,8 @@
 		return NT_STATUS_OK;
 	case LDB_ERR_NO_SUCH_ATTRIBUTE:
 		return NT_STATUS_MEMBER_NOT_IN_GROUP;
+	case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
+		return NT_STATUS_ACCESS_DENIED;
 	default:
 		return NT_STATUS_UNSUCCESSFUL;
 	}



More information about the samba-cvs mailing list