| 
      
            Lines 1642-1650
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1642 | 
          	struct ldb_result *res, *group_res;  | 
          1642 | 
          	struct ldb_result *res, *group_res;  | 
        
        
          | 1643 | 
          	struct ldb_message_element *el;  | 
          1643 | 
          	struct ldb_message_element *el;  | 
        
        
          | 1644 | 
          	struct ldb_message *msg;  | 
          1644 | 
          	struct ldb_message *msg;  | 
        
            
               | 
               | 
              1645 | 
              	uint32_t search_flags =  | 
            
            
              | 1646 | 
              		DSDB_FLAG_NEXT_MODULE | DSDB_SEARCH_SHOW_EXTENDED_DN;  | 
            
        
          | 1645 | 
          	uint32_t prev_rid, new_rid, uac;  | 
          1647 | 
          	uint32_t prev_rid, new_rid, uac;  | 
        
        
          | 1646 | 
          	struct dom_sid *prev_sid, *new_sid;  | 
          1648 | 
          	struct dom_sid *prev_sid, *new_sid;  | 
        
        
          | 1647 | 
          	struct ldb_dn *prev_prim_group_dn, *new_prim_group_dn;  | 
          1649 | 
          	struct ldb_dn *prev_prim_group_dn, *new_prim_group_dn;  | 
        
            
               | 
               | 
              1650 | 
              	const char *new_prim_group_dn_ext_str = NULL;  | 
            
            
              | 1651 | 
              	struct ldb_dn *user_dn = NULL;  | 
            
            
              | 1652 | 
              	const char *user_dn_ext_str = NULL;  | 
            
        
          | 1648 | 
          	int ret;  | 
          1653 | 
          	int ret;  | 
        
        
          | 1649 | 
          	const char * const noattrs[] = { NULL }; | 
          1654 | 
          	const char * const noattrs[] = { NULL }; | 
        
        
          | 1650 | 
           | 
          1655 | 
           | 
        
  
    | 
      
            Lines 1658-1667
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1658 | 
          	/* Fetch information from the existing object */  | 
          1663 | 
          	/* Fetch information from the existing object */  | 
        
        
          | 1659 | 
           | 
          1664 | 
           | 
        
        
          | 1660 | 
          	ret = dsdb_module_search_dn(ac->module, ac, &res, ac->msg->dn, attrs,  | 
          1665 | 
          	ret = dsdb_module_search_dn(ac->module, ac, &res, ac->msg->dn, attrs,  | 
        
          
            
              | 1661 | 
              				    DSDB_FLAG_NEXT_MODULE, ac->req);  | 
              1666 | 
              				    search_flags, ac->req);  | 
            
        
          | 1662 | 
          	if (ret != LDB_SUCCESS) { | 
          1667 | 
          	if (ret != LDB_SUCCESS) { | 
        
        
          | 1663 | 
          		return ret;  | 
          1668 | 
          		return ret;  | 
        
        
          | 1664 | 
          	}  | 
          1669 | 
          	}  | 
        
            
               | 
               | 
              1670 | 
              	user_dn = res->msgs[0]->dn;  | 
            
            
              | 1671 | 
              	user_dn_ext_str = ldb_dn_get_extended_linearized(ac, user_dn, 1);  | 
            
            
              | 1672 | 
              	if (user_dn_ext_str == NULL) { | 
            
            
              | 1673 | 
              		return ldb_operr(ldb);  | 
            
            
              | 1674 | 
              	}  | 
            
        
          | 1665 | 
           | 
          1675 | 
           | 
        
        
          | 1666 | 
          	uac = ldb_msg_find_attr_as_uint(res->msgs[0], "userAccountControl", 0);  | 
          1676 | 
          	uac = ldb_msg_find_attr_as_uint(res->msgs[0], "userAccountControl", 0);  | 
        
        
          | 1667 | 
           | 
          1677 | 
           | 
        
  
    | 
      
            Lines 1725-1731
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1725 | 
          	ret = dsdb_module_search(ac->module, ac, &group_res,  | 
          1735 | 
          	ret = dsdb_module_search(ac->module, ac, &group_res,  | 
        
        
          | 1726 | 
          				 ldb_get_default_basedn(ldb),  | 
          1736 | 
          				 ldb_get_default_basedn(ldb),  | 
        
        
          | 1727 | 
          				 LDB_SCOPE_SUBTREE,  | 
          1737 | 
          				 LDB_SCOPE_SUBTREE,  | 
        
          
            
              | 1728 | 
              				 noattrs, DSDB_FLAG_NEXT_MODULE,  | 
              1738 | 
              				 noattrs, search_flags,  | 
            
        
          | 1729 | 
          				 ac->req,  | 
          1739 | 
          				 ac->req,  | 
        
        
          | 1730 | 
          				 "(objectSid=%s)",  | 
          1740 | 
          				 "(objectSid=%s)",  | 
        
        
          | 1731 | 
          				 ldap_encode_ndr_dom_sid(ac, prev_sid));  | 
          1741 | 
          				 ldap_encode_ndr_dom_sid(ac, prev_sid));  | 
        
  
    | 
      
            Lines 1745-1751
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1745 | 
          	ret = dsdb_module_search(ac->module, ac, &group_res,  | 
          1755 | 
          	ret = dsdb_module_search(ac->module, ac, &group_res,  | 
        
        
          | 1746 | 
          				 ldb_get_default_basedn(ldb),  | 
          1756 | 
          				 ldb_get_default_basedn(ldb),  | 
        
        
          | 1747 | 
          				 LDB_SCOPE_SUBTREE,  | 
          1757 | 
          				 LDB_SCOPE_SUBTREE,  | 
        
          
            
              | 1748 | 
              				 noattrs, DSDB_FLAG_NEXT_MODULE,  | 
              1758 | 
              				 noattrs, search_flags,  | 
            
        
          | 1749 | 
          				 ac->req,  | 
          1759 | 
          				 ac->req,  | 
        
        
          | 1750 | 
          				 "(objectSid=%s)",  | 
          1760 | 
          				 "(objectSid=%s)",  | 
        
        
          | 1751 | 
          				 ldap_encode_ndr_dom_sid(ac, new_sid));  | 
          1761 | 
          				 ldap_encode_ndr_dom_sid(ac, new_sid));  | 
        
  
    | 
      
            Lines 1758-1768
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1758 | 
          		return LDB_ERR_UNWILLING_TO_PERFORM;  | 
          1768 | 
          		return LDB_ERR_UNWILLING_TO_PERFORM;  | 
        
        
          | 1759 | 
          	}  | 
          1769 | 
          	}  | 
        
        
          | 1760 | 
          	new_prim_group_dn = group_res->msgs[0]->dn;  | 
          1770 | 
          	new_prim_group_dn = group_res->msgs[0]->dn;  | 
        
            
               | 
               | 
              1771 | 
              	new_prim_group_dn_ext_str = ldb_dn_get_extended_linearized(ac,  | 
            
            
              | 1772 | 
              							new_prim_group_dn, 1);  | 
            
            
              | 1773 | 
              	if (new_prim_group_dn_ext_str == NULL) { | 
            
            
              | 1774 | 
              		return ldb_operr(ldb);  | 
            
            
              | 1775 | 
              	}  | 
            
        
          | 1761 | 
           | 
          1776 | 
           | 
        
        
          | 1762 | 
          	/* We need to be already a normal member of the new primary  | 
          1777 | 
          	/* We need to be already a normal member of the new primary  | 
        
        
          | 1763 | 
          	 * group in order to be successful. */  | 
          1778 | 
          	 * group in order to be successful. */  | 
        
        
          | 1764 | 
          	el = samdb_find_attribute(ldb, res->msgs[0], "memberOf",  | 
          1779 | 
          	el = samdb_find_attribute(ldb, res->msgs[0], "memberOf",  | 
        
          
            
              | 1765 | 
              				  ldb_dn_get_linearized(new_prim_group_dn));  | 
              1780 | 
              				  new_prim_group_dn_ext_str);  | 
            
        
          | 1766 | 
          	if (el == NULL) { | 
          1781 | 
          	if (el == NULL) { | 
        
        
          | 1767 | 
          		return LDB_ERR_UNWILLING_TO_PERFORM;  | 
          1782 | 
          		return LDB_ERR_UNWILLING_TO_PERFORM;  | 
        
        
          | 1768 | 
          	}  | 
          1783 | 
          	}  | 
        
  
    | 
      
            Lines 1774-1781
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1774 | 
          	}  | 
          1789 | 
          	}  | 
        
        
          | 1775 | 
          	msg->dn = new_prim_group_dn;  | 
          1790 | 
          	msg->dn = new_prim_group_dn;  | 
        
        
          | 1776 | 
           | 
          1791 | 
           | 
        
          
            
              | 1777 | 
              	ret = samdb_msg_add_delval(ldb, msg, msg, "member",  | 
              1792 | 
              	ret = samdb_msg_add_delval(ldb, msg, msg, "member", user_dn_ext_str);  | 
            
            
              | 1778 | 
              				   ldb_dn_get_linearized(ac->msg->dn));  | 
               | 
               | 
            
        
          | 1779 | 
          	if (ret != LDB_SUCCESS) { | 
          1793 | 
          	if (ret != LDB_SUCCESS) { | 
        
        
          | 1780 | 
          		return ret;  | 
          1794 | 
          		return ret;  | 
        
        
          | 1781 | 
          	}  | 
          1795 | 
          	}  | 
        
  
    | 
      
            Lines 1793-1800
          static int samldb_prim_group_change(struct samldb_ctx *ac)
      
      
        Link Here
      
     | 
  
        
          | 1793 | 
          	}  | 
          1807 | 
          	}  | 
        
        
          | 1794 | 
          	msg->dn = prev_prim_group_dn;  | 
          1808 | 
          	msg->dn = prev_prim_group_dn;  | 
        
        
          | 1795 | 
           | 
          1809 | 
           | 
        
          
            
              | 1796 | 
              	ret = samdb_msg_add_addval(ldb, msg, msg, "member",  | 
              1810 | 
              	ret = samdb_msg_add_addval(ldb, msg, msg, "member", user_dn_ext_str);  | 
            
            
              | 1797 | 
              				   ldb_dn_get_linearized(ac->msg->dn));  | 
               | 
               | 
            
        
          | 1798 | 
          	if (ret != LDB_SUCCESS) { | 
          1811 | 
          	if (ret != LDB_SUCCESS) { | 
        
        
          | 1799 | 
          		return ret;  | 
          1812 | 
          		return ret;  | 
        
        
          | 1800 | 
          	}  | 
          1813 | 
          	}  | 
        
            
              | 1801 | 
              -   | 
               | 
               | 
            
        
          | 1802 | 
          current backlink behaviour  | 
          1814 | 
          current backlink behaviour  | 
        
            
              | 1803 | 
              --  | 
               | 
               | 
            
        
          | 1804 | 
          .../samdb/ldb_modules/linked_attributes.c     | 18 +++++++++++++-  | 
          1815 | 
          .../samdb/ldb_modules/linked_attributes.c     | 18 +++++++++++++-  | 
        
        
          | 1805 | 
          .../dsdb/samdb/ldb_modules/repl_meta_data.c   | 24 ++++++++++++++-----  | 
          1816 | 
          .../dsdb/samdb/ldb_modules/repl_meta_data.c   | 24 ++++++++++++++-----  | 
        
        
          | 1806 | 
          testprogs/blackbox/test_primary_group.sh      |  6 ++++-  | 
          1817 | 
          testprogs/blackbox/test_primary_group.sh      |  6 ++++-  | 
        
        
          | 1807 | 
          3 files changed, 40 insertions(+), 8 deletions(-)  | 
          1818 | 
          3 files changed, 40 insertions(+), 8 deletions(-)  |