diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-01-02 14:53:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:35:57 -0500 |
commit | b885bc4a20e99a77d433b46c7af68cb0b5914208 (patch) | |
tree | c800fb738a1f45a25f56275add681a7d6a9a118c | |
parent | d70852659b4dbef9979be81f5d42e5587fc94c75 (diff) | |
download | samba-b885bc4a20e99a77d433b46c7af68cb0b5914208.tar.gz samba-b885bc4a20e99a77d433b46c7af68cb0b5914208.tar.bz2 samba-b885bc4a20e99a77d433b46c7af68cb0b5914208.zip |
r20477: get rid of the spcial case for unicode strings
metze
(This used to be commit ececda44c74ae4ccbaa0492acb67a88aa5c05126)
-rw-r--r-- | source4/dsdb/schema/schema_init.c | 28 | ||||
-rw-r--r-- | source4/dsdb/schema/schema_syntax.c | 11 | ||||
-rw-r--r-- | source4/librpc/idl/drsuapi.idl | 9 |
3 files changed, 22 insertions, 26 deletions
diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c index 41998a16db..6de87708c7 100644 --- a/source4/dsdb/schema/schema_init.c +++ b/source4/dsdb/schema/schema_init.c @@ -427,18 +427,34 @@ static struct drsuapi_DsReplicaAttribute *dsdb_find_object_attr_name(struct dsdb d_printf("%s: %s == NULL\n", __location__, attr); \ return WERR_INVALID_PARAM; \ } \ - if (strict && _a->value_ctr.unicode_string.num_values != 1) { \ + if (strict && _a->value_ctr.data_blob.num_values != 1) { \ d_printf("%s: %s num_values == %u\n", __location__, attr, \ - _a->value_ctr.unicode_string.num_values); \ + _a->value_ctr.data_blob.num_values); \ return WERR_INVALID_PARAM; \ } \ - if (_a && _a->value_ctr.unicode_string.num_values >= 1) { \ - (p)->elem = talloc_steal(mem_ctx, _a->value_ctr.unicode_string.values[0].string);\ + if (_a && _a->value_ctr.data_blob.num_values >= 1) { \ + ssize_t _ret; \ + _ret = convert_string_talloc(mem_ctx, CH_UTF16, CH_UNIX, \ + _a->value_ctr.data_blob.values[0].data->data, \ + _a->value_ctr.data_blob.values[0].data->length, \ + (void **)discard_const(&(p)->elem)); \ + if (_ret == -1) { \ + DEBUG(0,("%s: invalid data!\n", attr)); \ + dump_data(0, \ + _a->value_ctr.data_blob.values[0].data->data, \ + _a->value_ctr.data_blob.values[0].data->length); \ + return WERR_FOOBAR; \ + } \ } else { \ (p)->elem = NULL; \ } \ } while (0) +#define GET_DN_DS(s, r, attr, mem_ctx, p, elem, strict) do { \ + /* TODO: ! */ \ + (p)->elem = NULL; \ +} while (0) + #define GET_BOOL_DS(s, r, attr, p, elem, strict) do { \ struct drsuapi_DsReplicaAttribute *_a; \ _a = dsdb_find_object_attr_name(s, r, attr, NULL); \ @@ -594,8 +610,8 @@ WERROR dsdb_class_from_drsuapi(struct dsdb_schema *schema, GET_UINT32_DS(schema, r, "objectClassCategory", obj, objectClassCategory); GET_STRING_DS(schema, r, "rDNAttID", mem_ctx, obj, rDNAttID, False); - GET_STRING_DS(schema, r, "defaultObjectCategory", mem_ctx, obj, defaultObjectCategory, True); - + GET_DN_DS(schema, r, "defaultObjectCategory", mem_ctx, obj, defaultObjectCategory, True); + GET_STRING_DS(schema, r, "subClassOf", mem_ctx, obj, subClassOf, True); obj->systemAuxiliaryClass = NULL; diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c index 8a2747bd9d..5a96f11d6b 100644 --- a/source4/dsdb/schema/schema_syntax.c +++ b/source4/dsdb/schema/schema_syntax.c @@ -747,17 +747,6 @@ static WERROR dsdb_syntax_UNICODE_drsuapi_to_ldb(const struct dsdb_schema *schem { uint32_t i; -switch (attr->attributeID_id) { -case DRSUAPI_ATTRIBUTE_description: -case DRSUAPI_ATTRIBUTE_adminDisplayName: -case DRSUAPI_ATTRIBUTE_adminDescription: -case DRSUAPI_ATTRIBUTE_lDAPDisplayName: -case DRSUAPI_ATTRIBUTE_name: -case DRSUAPI_ATTRIBUTE_sAMAccountName: -case DRSUAPI_ATTRIBUTE_gPLink: - return dsdb_syntax_FOOBAR_drsuapi_to_ldb(schema,attr, in, mem_ctx, out); -} - out->flags = 0; out->name = talloc_strdup(mem_ctx, attr->lDAPDisplayName); W_ERROR_HAVE_NO_MEMORY(out->name); diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index 624835121f..79f6e6928a 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -519,15 +519,6 @@ interface drsuapi } drsuapi_DsAttributeValueCtrGUID; typedef [nodiscriminant] union { - /* UnicodeString */ - [case(DRSUAPI_ATTRIBUTE_description)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_adminDisplayName)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_adminDescription)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_lDAPDisplayName)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_name)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_sAMAccountName)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - [case(DRSUAPI_ATTRIBUTE_gPLink)] drsuapi_DsAttributeValueCtrUnicodeString unicode_string; - /* DN String */ [case(DRSUAPI_ATTRIBUTE_member)] drsuapi_DsAttributeValueCtrDNString dn_string; [case(DRSUAPI_ATTRIBUTE_objectCategory)] drsuapi_DsAttributeValueCtrDNString dn_string; |