diff options
author | Noriko Hosoi <nhosoi@redhat.com> | 2010-04-26 11:03:52 -0700 |
---|---|---|
committer | Noriko Hosoi <nhosoi@redhat.com> | 2010-04-26 11:03:52 -0700 |
commit | 78c50664d6421cc5d0836bb03820680dc2cb7acf (patch) | |
tree | 20fcfadad9057617daa0b159216f0a92006969f5 /ldap/servers/slapd/back-ldbm/ldbm_index_config.c | |
parent | 4754291972668c37559a8f68d75ac6f8c477efb8 (diff) | |
download | ds-78c50664d6421cc5d0836bb03820680dc2cb7acf.tar.gz ds-78c50664d6421cc5d0836bb03820680dc2cb7acf.tar.xz ds-78c50664d6421cc5d0836bb03820680dc2cb7acf.zip |
Update to New DN Format
Fix Description:
. adding slapi_dn_normalize_ext and its siblings to normalize/validate
invalid DNs; deprecating slapi_dn_normalize and its siblings. (dn.c)
. replacing slapi_dn_normalize with new corresponding functions.
. normalizing hardcoded DNs (e.g., removing spaces around ',')
. setting correct DN syntax to nsslapd-suffix, nsslapd-ldapiautodnsuffix,
costemplatedn, nsslapd-changelogsuffix, nsBaseDN, nsBindDN
. if nsslapd-dn-validate-strict is enabled, incoming DN is examined and
rejected if it is invalid. Once approved, the DN is normalized.
. fixing compiler warnings and typos.
See also:
http://directory.fedoraproject.org/wiki/Upgrade_to_New_DN_Format
Related bugs:
Bug 199923 - subtree search fails to find items under a db containing special
characters
Bug 567968 - subtree/user level password policy created using 389-ds-console
doesn't work.
Bug 570107 - The import of LDIFs with base-64 encoded DNs fails, modrdn with
non-ASCII new rdn incorrect
Bug 570962 - ns-inactivate.pl does not work
Bug 572785 - DN syntax: old style of DN <type>="<DN>",<the_rest> is not
correctly normalized
Bug 573060 - DN normalizer: ESC HEX HEX is not normalized
Bug 574167 - An escaped space at the end of the RDN value is not handled
correctly
Diffstat (limited to 'ldap/servers/slapd/back-ldbm/ldbm_index_config.c')
-rw-r--r-- | ldap/servers/slapd/back-ldbm/ldbm_index_config.c | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_index_config.c b/ldap/servers/slapd/back-ldbm/ldbm_index_config.c index 9dc0f98d..503c0fc6 100644 --- a/ldap/servers/slapd/back-ldbm/ldbm_index_config.c +++ b/ldap/servers/slapd/back-ldbm/ldbm_index_config.c @@ -622,6 +622,7 @@ int ldbm_instance_config_add_index_entry( char tmpIndexesStr[256]; char tmpMatchingRulesStr[1024]; struct ldbminfo *li = inst->inst_li; + char *dn = NULL; if ((argc < 2) || (NULL == argv) || (NULL == argv[0]) || (NULL == argv[1])) { @@ -642,31 +643,42 @@ int ldbm_instance_config_add_index_entry( { if('\0' == attrs[i][0]) continue; basetype = slapi_attr_basetype(attrs[i], NULL, 0); + dn = slapi_create_dn_string("cn=%s,cn=index,cn=%s,cn=%s,cn=plugins,cn=config", + basetype, inst->inst_name, li->li_plugin->plg_name); + if (NULL == dn) { + LDAPDebug(LDAP_DEBUG_ANY, + "ldbm_instance_config_add_index_entry: " + "failed create index dn with type %s for plugin %s, " + "instance %s\n", + basetype, inst->inst_li->li_plugin->plg_name, + inst->inst_name); + return -1; + } eBuf = PR_smprintf( - "dn: cn=%s, cn=index, cn=%s, cn=%s, cn=plugins, cn=config\n" - "objectclass:top\n" - "objectclass:nsIndex\n" - "cn:%s\n" - "nsSystemIndex:%s\n", - basetype, inst->inst_name, li->li_plugin->plg_name, - basetype, + "dn: %s\n" + "objectclass: top\n" + "objectclass: nsIndex\n" + "cn: %s\n" + "nsSystemIndex: %s\n", + dn, basetype, (ldbm_attribute_always_indexed(basetype)?"true":"false")); + slapi_ch_free_string(&dn); for(j=0; indexes[j] != NULL; j++) { - eBuf = PR_sprintf_append(eBuf, "nsIndexType:%s\n", indexes[j]); + eBuf = PR_sprintf_append(eBuf, "nsIndexType:%s\n", indexes[j]); } if((argc>2)&&(argv[2])) { for(j=0; matchingRules[j] != NULL; j++) { - eBuf = PR_sprintf_append(eBuf, "nsMatchingRule:%s\n", matchingRules[j]); + eBuf = PR_sprintf_append(eBuf, "nsMatchingRule:%s\n", matchingRules[j]); } } ldbm_config_add_dse_entry(li, eBuf, flags); - if (eBuf) { - PR_smprintf_free(eBuf); - } + if (eBuf) { + PR_smprintf_free(eBuf); + } slapi_ch_free((void**)&basetype); } @@ -722,10 +734,10 @@ int ldbm_instance_create_default_user_indexes(ldbm_instance *inst) Slapi_Value *sval = NULL; const struct berval *attrValue; char *argv[ 8 ]; - char basedn[BUFSIZ]; char tmpBuf[MAX_TMPBUF]; char tmpBuf2[MAX_TMPBUF]; int argc; + char *basedn = NULL; struct ldbminfo *li; @@ -742,8 +754,15 @@ int ldbm_instance_create_default_user_indexes(ldbm_instance *inst) strcpy(tmpBuf,""); /* Construct the base dn of the subtree that holds the default user indexes. */ - PR_snprintf(basedn, BUFSIZ, "cn=default indexes, cn=config, cn=%s, cn=plugins, cn=config", - li->li_plugin->plg_name); + basedn = slapi_create_dn_string("cn=default indexes,cn=config,cn=%s,cn=plugins,cn=config", + li->li_plugin->plg_name); + if (NULL == basedn) { + LDAPDebug1Arg(LDAP_DEBUG_ANY, + "ldbm_instance_create_default_user_indexes: " + "failed create default index dn for plugin %s\n", + inst->inst_li->li_plugin->plg_name); + return -1; + } /* Do a search of the subtree containing the index entries */ aPb = slapi_pblock_new(); @@ -821,5 +840,6 @@ int ldbm_instance_create_default_user_indexes(ldbm_instance *inst) slapi_free_search_results_internal(aPb); slapi_pblock_destroy(aPb); + slapi_ch_free_string(&basedn); return 0; } |