s4/rpc_server Don't segfault over replPropertyMetaData contents
authorAndrew Bartlett <abartlet@samba.org>
Wed, 10 Mar 2010 23:42:18 +0000 (10:42 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 11 Mar 2010 00:27:47 +0000 (11:27 +1100)
The replPropertyMetaData may contain attrid values that we don't yet
have in the local schema.  We need to deal with this - it is a serious
error, but we should not segfault.

Andrew Bartlett

source4/rpc_server/drsuapi/getncchanges.c

index 1e407501a58c829e1c1e1835576334b92c127251..c7c69de7307a059d08b9416015785e9e28af2edd 100644 (file)
@@ -175,6 +175,13 @@ static WERROR get_nc_changes_build_object(struct drsuapi_DsReplicaObjectListItem
                if (md.ctr.ctr1.array[i].attid == rdn_sa->attributeID_id) continue;
 
                sa = dsdb_attribute_by_attributeID_id(schema, md.ctr.ctr1.array[i].attid);
+               if (!sa) {
+                       DEBUG(0,(__location__ ": Failed to find attribute in schema for attrid %u mentioned in replPropertyMetaData of %s\n", 
+                                (unsigned int)md.ctr.ctr1.array[i].attid, 
+                                ldb_dn_get_linearized(msg->dn)));
+                       return WERR_DS_DRA_INTERNAL_ERROR;              
+               }
+
                if (sa->linkID) {
                        struct ldb_message_element *el;
                        el = ldb_msg_find_element(msg, sa->lDAPDisplayName);