use case compare for teletex string

This commit is contained in:
Love Hornquist Astrand
2010-05-01 11:47:02 +02:00
parent af0f2717c2
commit fd107d08c4

View File

@@ -319,7 +319,7 @@ _hx509_Name_to_string(const Name *n, char **str)
static int static int
dsstringprep(const DirectoryString *ds, uint32_t **rname, size_t *rlen) dsstringprep(const DirectoryString *ds, uint32_t **rname, size_t *rlen)
{ {
wind_profile_flags flags = 0; wind_profile_flags flags;
size_t i, len; size_t i, len;
int ret; int ret;
uint32_t *name; uint32_t *name;
@@ -329,22 +329,28 @@ dsstringprep(const DirectoryString *ds, uint32_t **rname, size_t *rlen)
switch(ds->element) { switch(ds->element) {
case choice_DirectoryString_ia5String: case choice_DirectoryString_ia5String:
flags = WIND_PROFILE_LDAP;
COPYCHARARRAY(ds, ia5String, len, name); COPYCHARARRAY(ds, ia5String, len, name);
break; break;
case choice_DirectoryString_printableString: case choice_DirectoryString_printableString:
flags = WIND_PROFILE_LDAP_CASE_EXACT_ATTRIBUTE; flags = WIND_PROFILE_LDAP;
flags |= WIND_PROFILE_LDAP_CASE_EXACT_ATTRIBUTE;
COPYCHARARRAY(ds, printableString, len, name); COPYCHARARRAY(ds, printableString, len, name);
break; break;
case choice_DirectoryString_teletexString: case choice_DirectoryString_teletexString:
flags = WIND_PROFILE_LDAP_CASE;
COPYCHARARRAY(ds, teletexString, len, name); COPYCHARARRAY(ds, teletexString, len, name);
break; break;
case choice_DirectoryString_bmpString: case choice_DirectoryString_bmpString:
flags = WIND_PROFILE_LDAP;
COPYVALARRAY(ds, bmpString, len, name); COPYVALARRAY(ds, bmpString, len, name);
break; break;
case choice_DirectoryString_universalString: case choice_DirectoryString_universalString:
flags = WIND_PROFILE_LDAP;
COPYVALARRAY(ds, universalString, len, name); COPYVALARRAY(ds, universalString, len, name);
break; break;
case choice_DirectoryString_utf8String: case choice_DirectoryString_utf8String:
flags = WIND_PROFILE_LDAP;
ret = wind_utf8ucs4_length(ds->u.utf8String, &len); ret = wind_utf8ucs4_length(ds->u.utf8String, &len);
if (ret) if (ret)
return ret; return ret;
@@ -367,8 +373,7 @@ dsstringprep(const DirectoryString *ds, uint32_t **rname, size_t *rlen)
*rlen = *rlen * 2; *rlen = *rlen * 2;
*rname = malloc(*rlen * sizeof((*rname)[0])); *rname = malloc(*rlen * sizeof((*rname)[0]));
ret = wind_stringprep(name, len, *rname, rlen, ret = wind_stringprep(name, len, *rname, rlen, flags);
WIND_PROFILE_LDAP|flags);
if (ret == WIND_ERR_OVERRUN) { if (ret == WIND_ERR_OVERRUN) {
free(*rname); free(*rname);
*rname = NULL; *rname = NULL;