mirror of
https://github.com/samba-team/samba.git
synced 2024-12-29 11:21:54 +03:00
r20477: get rid of the spcial case for unicode strings
metze
This commit is contained in:
parent
13ccd405b5
commit
ececda44c7
@ -427,18 +427,34 @@ static struct drsuapi_DsReplicaAttribute *dsdb_find_object_attr_name(struct dsdb
|
|||||||
d_printf("%s: %s == NULL\n", __location__, attr); \
|
d_printf("%s: %s == NULL\n", __location__, attr); \
|
||||||
return WERR_INVALID_PARAM; \
|
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, \
|
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; \
|
return WERR_INVALID_PARAM; \
|
||||||
} \
|
} \
|
||||||
if (_a && _a->value_ctr.unicode_string.num_values >= 1) { \
|
if (_a && _a->value_ctr.data_blob.num_values >= 1) { \
|
||||||
(p)->elem = talloc_steal(mem_ctx, _a->value_ctr.unicode_string.values[0].string);\
|
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 { \
|
} else { \
|
||||||
(p)->elem = NULL; \
|
(p)->elem = NULL; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} 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 { \
|
#define GET_BOOL_DS(s, r, attr, p, elem, strict) do { \
|
||||||
struct drsuapi_DsReplicaAttribute *_a; \
|
struct drsuapi_DsReplicaAttribute *_a; \
|
||||||
_a = dsdb_find_object_attr_name(s, r, attr, NULL); \
|
_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_UINT32_DS(schema, r, "objectClassCategory", obj, objectClassCategory);
|
||||||
GET_STRING_DS(schema, r, "rDNAttID", mem_ctx, obj, rDNAttID, False);
|
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);
|
GET_STRING_DS(schema, r, "subClassOf", mem_ctx, obj, subClassOf, True);
|
||||||
|
|
||||||
obj->systemAuxiliaryClass = NULL;
|
obj->systemAuxiliaryClass = NULL;
|
||||||
|
@ -747,17 +747,6 @@ static WERROR dsdb_syntax_UNICODE_drsuapi_to_ldb(const struct dsdb_schema *schem
|
|||||||
{
|
{
|
||||||
uint32_t i;
|
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->flags = 0;
|
||||||
out->name = talloc_strdup(mem_ctx, attr->lDAPDisplayName);
|
out->name = talloc_strdup(mem_ctx, attr->lDAPDisplayName);
|
||||||
W_ERROR_HAVE_NO_MEMORY(out->name);
|
W_ERROR_HAVE_NO_MEMORY(out->name);
|
||||||
|
@ -519,15 +519,6 @@ interface drsuapi
|
|||||||
} drsuapi_DsAttributeValueCtrGUID;
|
} drsuapi_DsAttributeValueCtrGUID;
|
||||||
|
|
||||||
typedef [nodiscriminant] union {
|
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 */
|
/* DN String */
|
||||||
[case(DRSUAPI_ATTRIBUTE_member)] drsuapi_DsAttributeValueCtrDNString dn_string;
|
[case(DRSUAPI_ATTRIBUTE_member)] drsuapi_DsAttributeValueCtrDNString dn_string;
|
||||||
[case(DRSUAPI_ATTRIBUTE_objectCategory)] drsuapi_DsAttributeValueCtrDNString dn_string;
|
[case(DRSUAPI_ATTRIBUTE_objectCategory)] drsuapi_DsAttributeValueCtrDNString dn_string;
|
||||||
|
Loading…
Reference in New Issue
Block a user