The branch, master has been updated via 89899f5... s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value if it exists via e050274... s4-test: make better error message for ATTID checks via c3cf388... s4-test: Change attribute syntax and value for readability via a46ead0... s4-test: Enable drs.rpc.msdsintid test case - it should be passing now via 6950724... s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() to be public via 6a51afc... s4-drs: GetNCChanges() to return correct (in AD-way) ATTIDs via 35d886d... s4-dsdb-syntax: ATTID should be msDs-IntId value for the attributeSchema object via fffc98f... s4: fix few comment typos via d01804d... s4-schema_syntax.c: Fix white spaces and alignment via c5ec1f3... s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb functions via b5af7b9... s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi functions via ca80918... s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions via b7d1586... s4-dsdb: Add context structure for dsdb_syntax conversion functions via 20a8481... s4-test-dssync: remove unused variable from da25541... Fix bug 7626 - Typo in configure samba_cv__CC_NEGATIVE_ENUM_VALUES two underscores.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 89899f55dc1fb137a0adfd734c87b65039f598a4 Author: Kamen Mazdrashki <kame...@samba.org> Date: Thu Aug 19 03:17:36 2010 +0300 s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value if it exists commit e05027401f4733e43b62148fa5c59559f49b4c1b Author: Kamen Mazdrashki <kame...@samba.org> Date: Thu Aug 19 03:08:29 2010 +0300 s4-test: make better error message for ATTID checks commit c3cf388eaf322b7646aa464774baa324be81a56d Author: Kamen Mazdrashki <kame...@samba.org> Date: Thu Aug 19 02:47:14 2010 +0300 s4-test: Change attribute syntax and value for readability When it comes to read logs and dumping data received Octet String syntax comes in handy commit a46ead0724f54a6034913fe5d1da077140d58133 Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Aug 18 13:21:10 2010 +0300 s4-test: Enable drs.rpc.msdsintid test case - it should be passing now commit 695072478d5d5bd476524228fc09cde200abcf6b Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Aug 18 03:19:45 2010 +0300 s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() to be public It is intended to be used in schema_syntax.c module commit 6a51afcfdbcbce7813fb59c0655e4178268ca70e Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Aug 18 03:52:48 2010 +0300 s4-drs: GetNCChanges() to return correct (in AD-way) ATTIDs Depending on which NC is being replicated, GetNCChanges() returns either ATTID based on local prefixMap or msDs-IntId value of the attributeSchema class for the attribute being replicated. If set, msDs-IntId value is always returned when replicating object form NC other than Schema NC. Objects in Schema NC replica always use prefixMap based ATTIDs. commit 35d886db176123b3ef3a0436463f59edcaed1322 Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Aug 18 03:06:53 2010 +0300 s4-dsdb-syntax: ATTID should be msDs-IntId value for the attributeSchema object in case object replicated is not in Schema NC and attributeSchema object has msDs-IntId attribute value set commit fffc98f33e333b8711da053e5cd5ddcc601cd275 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 04:48:24 2010 +0300 s4: fix few comment typos commit d01804dda9d1e1793f3e1d2f863c4444ed7e900c Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 04:44:52 2010 +0300 s4-schema_syntax.c: Fix white spaces and alignment commit c5ec1f3d9246f5737279340bf1755baf542d982b Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 04:20:46 2010 +0300 s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb functions commit b5af7b9a1eb70db949c83fe6b55e402b82a2a9a4 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 04:12:54 2010 +0300 s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi functions commit ca809186137e259060032ef61d9d3e93cddad298 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 03:58:26 2010 +0300 s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions commit b7d1586ccd05a78a4fae512c54fa39dda408e08b Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Aug 17 03:21:46 2010 +0300 s4-dsdb: Add context structure for dsdb_syntax conversion functions This structure is intended to hold context-dependent data. Syntax-conversion and object-conversion functions need that data to convert objects and attributes from drs-to-ldb and ldb-to-drs correctly. For instance: ATTID value depends on whether we are converting object from partition different that Schema partition. commit 20a8481d3ff149e3cece6f2d8d2cf6ae8462d11a Author: Kamen Mazdrashki <kame...@samba.org> Date: Mon Aug 16 18:57:02 2010 +0300 s4-test-dssync: remove unused variable ----------------------------------------------------------------------- Summary of changes: source4/dsdb/common/dsdb_dn.c | 12 +- source4/dsdb/samdb/ldb_modules/objectclass_attrs.c | 10 +- source4/dsdb/schema/schema.h | 18 +- source4/dsdb/schema/schema_syntax.c | 456 ++++++++++---------- source4/dsdb/schema/tests/schema_syntax.c | 8 +- source4/rpc_server/drsuapi/getncchanges.c | 22 +- source4/selftest/knownfail | 1 - source4/torture/drs/rpc/dssync.c | 1 - source4/torture/drs/rpc/msds_intid.c | 30 +- 9 files changed, 303 insertions(+), 255 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/dsdb/common/dsdb_dn.c b/source4/dsdb/common/dsdb_dn.c index 9023b03..cb9cb29 100644 --- a/source4/dsdb/common/dsdb_dn.c +++ b/source4/dsdb/common/dsdb_dn.c @@ -340,6 +340,10 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx, WERROR werr; struct ldb_message_element val_el; struct drsuapi_DsReplicaAttribute drs; + struct dsdb_syntax_ctx syntax_ctx; + + /* use default syntax conversion context */ + dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema); /* we need a message_element with just one value in it */ v = data_blob_string_const(dsdb_dn_get_extended_linearized(mem_ctx, dsdb_dn, 1)); @@ -348,7 +352,7 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx, val_el.values = &v; val_el.num_values = 1; - werr = schema_attrib->syntax->ldb_to_drsuapi(sam_ctx, schema, schema_attrib, &val_el, mem_ctx, &drs); + werr = schema_attrib->syntax->ldb_to_drsuapi(&syntax_ctx, schema_attrib, &val_el, mem_ctx, &drs); W_ERROR_NOT_OK_RETURN(werr); if (drs.value_ctr.num_values != 1) { @@ -375,12 +379,16 @@ WERROR dsdb_dn_la_from_blob(struct ldb_context *sam_ctx, struct ldb_message_element new_el; struct drsuapi_DsReplicaAttribute drs; struct drsuapi_DsAttributeValue val; + struct dsdb_syntax_ctx syntax_ctx; + + /* use default syntax conversion context */ + dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema); drs.value_ctr.num_values = 1; drs.value_ctr.values = &val; val.blob = blob; - werr = schema_attrib->syntax->drsuapi_to_ldb(sam_ctx, schema, schema_attrib, &drs, mem_ctx, &new_el); + werr = schema_attrib->syntax->drsuapi_to_ldb(&syntax_ctx, schema_attrib, &drs, mem_ctx, &new_el); W_ERROR_NOT_OK_RETURN(werr); if (new_el.num_values != 1) { diff --git a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c index 070d858..555295a 100644 --- a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c +++ b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c @@ -79,6 +79,7 @@ static int attr_handler(struct oc_context *ac) unsigned int i; int ret; WERROR werr; + struct dsdb_syntax_ctx syntax_ctx; ldb = ldb_module_get_ctx(ac->module); @@ -91,6 +92,9 @@ static int attr_handler(struct oc_context *ac) return ldb_oom(ldb); } + /* initialize syntax checking context */ + dsdb_syntax_ctx_init(&syntax_ctx, ldb, ac->schema); + /* Check if attributes exist in the schema, if the values match, * if they're not operational and fix the names to the match the schema * case */ @@ -114,7 +118,7 @@ static int attr_handler(struct oc_context *ac) } if (!(msg->elements[i].flags & LDB_FLAG_INTERNAL_DISABLE_VALIDATION)) { - werr = attr->syntax->validate_ldb(ldb, ac->schema, attr, + werr = attr->syntax->validate_ldb(&syntax_ctx, attr, &msg->elements[i]); if (!W_ERROR_IS_OK(werr)) { ldb_asprintf_errstring(ldb, "objectclass_attrs: attribute '%s' on entry '%s' contains at least one invalid value!", @@ -135,7 +139,7 @@ static int attr_handler(struct oc_context *ac) } } - /* subsitute the attribute name to match in case */ + /* Substitute the attribute name to match in case */ msg->elements[i].name = attr->lDAPDisplayName; } @@ -177,7 +181,7 @@ static int attr_handler2(struct oc_context *ac) return ldb_operr(ldb); } - /* We rely here on the preceeding "objectclass" LDB module which did + /* We rely here on the preceding "objectclass" LDB module which did * already fix up the objectclass list (inheritance, order...). */ oc_element = ldb_msg_find_element(ac->search_res->message, "objectClass"); diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index 34423be..8c73fd5 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -28,6 +28,15 @@ struct dsdb_attribute; struct dsdb_class; struct dsdb_schema; +struct dsdb_syntax_ctx { + struct ldb_context *ldb; + const struct dsdb_schema *schema; + + /* set when converting objects under Schema NC */ + bool is_schema_nc; +}; + + struct dsdb_syntax { const char *name; const char *ldap_oid; @@ -39,20 +48,17 @@ struct dsdb_syntax { const char *comment; const char *ldb_syntax; - WERROR (*drsuapi_to_ldb)(struct ldb_context *ldb, - const struct dsdb_schema *schema, + WERROR (*drsuapi_to_ldb)(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, struct ldb_message_element *out); - WERROR (*ldb_to_drsuapi)(struct ldb_context *ldb, - const struct dsdb_schema *schema, + WERROR (*ldb_to_drsuapi)(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, struct drsuapi_DsReplicaAttribute *out); - WERROR (*validate_ldb)(struct ldb_context *ldb, - const struct dsdb_schema *schema, + WERROR (*validate_ldb)(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in); }; diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c index 193d62d..db53aea 100644 --- a/source4/dsdb/schema/schema_syntax.c +++ b/source4/dsdb/schema/schema_syntax.c @@ -1,7 +1,7 @@ -/* +/* Unix SMB/CIFS mplementation. DSDB schema syntaxes - + Copyright (C) Stefan Metzmacher <me...@samba.org> 2006 Copyright (C) Simo Sorce 2005 Copyright (C) Andrew Bartlett <abart...@samba.org> 2008 @@ -10,15 +10,15 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. - + */ #include "includes.h" #include "dsdb/samdb/samdb.h" @@ -31,8 +31,44 @@ #include "../lib/util/charset/charset.h" #include "librpc/ndr/libndr.h" -static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +/** + * Initialize dsdb_syntax_ctx with default values + * for common cases. + */ +void dsdb_syntax_ctx_init(struct dsdb_syntax_ctx *ctx, + struct ldb_context *ldb, + const struct dsdb_schema *schema) +{ + ctx->ldb = ldb; + ctx->schema = schema; + + /* + * 'true' will keep current behavior, + * i.e. attributeID_id will be returned by default + */ + ctx->is_schema_nc = true; +} + + +/** + * Returns ATTID for DRS attribute. + * + * ATTID depends on whether we are replicating + * Schema NC or msDs-IntId is set for schemaAttribute + * for the attribute. + */ +uint32_t dsdb_attribute_get_attid(const struct dsdb_attribute *attr, + bool for_schema_nc) +{ + if (!for_schema_nc && attr->msDS_IntId) { + return attr->msDS_IntId; + } + + return attr->attributeID_id; +} + + +static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -65,8 +101,7 @@ static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -75,16 +110,14 @@ static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } -static WERROR dsdb_syntax_FOOBAR_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_FOOBAR_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { return WERR_FOOBAR; } -static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -128,8 +161,7 @@ static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -142,7 +174,8 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -170,8 +203,7 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_BOOL_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_BOOL_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { @@ -199,8 +231,7 @@ static WERROR dsdb_syntax_BOOL_validate_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -239,8 +270,7 @@ static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -253,7 +283,8 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -281,8 +312,7 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT32_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT32_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { @@ -328,8 +358,7 @@ static WERROR dsdb_syntax_INT32_validate_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -368,8 +397,7 @@ static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -382,7 +410,8 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -408,8 +437,7 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_INT64_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_INT64_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { @@ -454,8 +482,7 @@ static WERROR dsdb_syntax_INT64_validate_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -488,7 +515,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, v *= 10000000; t = nt_time_to_unix(v); - /* + /* * NOTE: On a w2k3 server you can set a GeneralizedTime string * via LDAP, but you get back an UTCTime string, * but via DRSUAPI you get back the NTTIME_1sec value @@ -497,7 +524,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, * So if we store the UTCTime string in our ldb * we'll loose information! */ - str = ldb_timestring_utc(out->values, t); + str = ldb_timestring_utc(out->values, t); W_ERROR_HAVE_NO_MEMORY(str); out->values[i] = data_blob_string_const(str); } @@ -505,8 +532,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -519,7 +545,8 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -548,8 +575,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { @@ -596,8 +622,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -630,7 +655,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb, v *= 10000000; t = nt_time_to_unix(v); - str = ldb_timestring(out->values, t); + str = ldb_timestring(out->values, t); W_ERROR_HAVE_NO_MEMORY(str); out->values[i] = data_blob_string_const(str); @@ -639,8 +664,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -653,7 +677,8 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -686,8 +711,7 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_NTTIME_validate_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_NTTIME_validate_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in) { @@ -722,8 +746,7 @@ static WERROR dsdb_syntax_NTTIME_validate_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, @@ -756,8 +779,7 @@ static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_message_element *in, TALLOC_CTX *mem_ctx, @@ -770,7 +792,8 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_FOOBAR; } - out->attid = attr->attributeID_id; + out->attid = dsdb_attribute_get_attid(attr, + ctx->is_schema_nc); out->value_ctr.num_values = in->num_values; out->value_ctr.values = talloc_array(mem_ctx, struct drsuapi_DsAttributeValue, @@ -790,8 +813,7 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(struct ldb_context *ldb, - const struct dsdb_schema *schema, +static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(const struct dsdb_syntax_ctx *ctx, const struct dsdb_attribute *attr, const struct ldb_val *val) -- Samba Shared Repository