diff options
| author | Andrew Bartlett <abartlet@samba.org> | 2013-09-24 10:12:24 -0700 |
|---|---|---|
| committer | Stefan Metzmacher <metze@samba.org> | 2014-07-09 08:42:07 +0200 |
| commit | 1592eaa5c781af83aa64bc4e7211339e1d1eafce (patch) | |
| tree | a59ea4b07e342dc0e80f6a1816742ae866c97ae6 /source4/dsdb | |
| parent | d64bc6c9af24109e89632db9133070f2ab827c46 (diff) | |
| download | samba-1592eaa5c781af83aa64bc4e7211339e1d1eafce.tar.gz samba-1592eaa5c781af83aa64bc4e7211339e1d1eafce.tar.xz samba-1592eaa5c781af83aa64bc4e7211339e1d1eafce.zip | |
dsdb: Set syntax of userParameters to binary string, not unicode string
This means we continue to store the values as given on SAMR, assuming
that the SAMR buffer is little endian. The syntax for this specific
object is forced to be a binary blob, so that it is not converted on
DRSUAPI.
This commit does not fix existing databases, nor pdb_samba_dsdb (used
by classicupgrade).
Andrew Bartlett
Bug: https://bugzilla.samba.org/show_bug.cgi?id=8077
Change-Id: I10bb6aaecc381194e3c0ce6b9163f961acbdcee1
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/dsdb')
| -rw-r--r-- | source4/dsdb/schema/schema.h | 1 | ||||
| -rw-r--r-- | source4/dsdb/schema/schema_syntax.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index cac6f98a27..457d986e3d 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -74,6 +74,7 @@ struct dsdb_syntax { const struct dsdb_attribute *attr, const struct ldb_message_element *in); bool auto_normalise; + bool userParameters; /* Indicates the syntax userParameters should be forced to */ }; struct dsdb_attribute { diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c index c2e0208258..c9ff588880 100644 --- a/source4/dsdb/schema/schema_syntax.c +++ b/source4/dsdb/schema/schema_syntax.c @@ -2395,6 +2395,7 @@ static const struct dsdb_syntax dsdb_syntaxes[] = { .validate_ldb = dsdb_syntax_DATA_BLOB_validate_ldb, .equality = "octetStringMatch", .comment = "Octet String", + .userParameters = true },{ .name = "String(Sid)", .ldap_oid = LDB_SYNTAX_OCTET_STRING, @@ -2665,6 +2666,16 @@ const struct dsdb_syntax *dsdb_syntax_for_attribute(const struct dsdb_attribute unsigned int i; for (i=0; i < ARRAY_SIZE(dsdb_syntaxes); i++) { + /* + * We must pretend that userParamters was declared + * binary string, so we can store the 'UTF16' (not + * really string) structure as given over SAMR to samba + */ + if (dsdb_syntaxes[i].userParameters && + (strcasecmp(attr->lDAPDisplayName, "userParameters") == 0)) + { + return &dsdb_syntaxes[i]; + } if (attr->oMSyntax != dsdb_syntaxes[i].oMSyntax) continue; if (attr->oMObjectClass.length != dsdb_syntaxes[i].oMObjectClass.length) continue; |
