Add partial support for LDAP-prep Insignificant Character Handling

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22582 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-02-11 20:43:50 +00:00
parent 98807b31c1
commit 7705b6ddef
6 changed files with 60 additions and 13 deletions

View File

@@ -62,6 +62,7 @@ wind_stringprep(const uint32_t *in, size_t in_len,
size_t tmp_len = in_len * 3;
uint32_t *tmp = malloc(tmp_len * sizeof(uint32_t));
int ret;
size_t olen;
if (tmp == NULL)
return ENOMEM;
@@ -71,17 +72,39 @@ wind_stringprep(const uint32_t *in, size_t in_len,
free(tmp);
return ret;
}
ret = _wind_stringprep_normalize(tmp, tmp_len, out, out_len);
olen = *out_len;
ret = _wind_stringprep_normalize(tmp, tmp_len, tmp, &olen);
if (ret) {
free(tmp);
return ret;
}
ret = _wind_stringprep_prohibited(tmp, olen, flags);
if (ret) {
free(tmp);
return ret;
}
ret = _wind_stringprep_testbidi(tmp, olen, flags);
if (ret) {
free(tmp);
return ret;
}
/* Insignificant Character Handling for ldap-prep */
if (flags & WIND_PROFILE_LDAP_CASE_EXACT_ATTRIBUTE) {
ret = _wind_ldap_case_exact_attribute(tmp, olen, out, out_len);
#if 0
} else if (flags & WIND_PROFILE_LDAP_CASE_EXACT_ASSERTION) {
} else if (flags & WIND_PROFILE_LDAP_NUMERIC) {
} else if (flags & WIND_PROFILE_LDAP_TELEPHONE) {
} else {
#endif
memcpy(out, tmp, sizeof(out[0]) * olen);
*out_len = olen;
}
free(tmp);
if (ret)
return ret;
ret = _wind_stringprep_prohibited(out, *out_len, flags);
if (ret)
return ret;
ret = _wind_stringprep_testbidi(out, *out_len, flags);
if (ret)
return ret;
return 0;
return ret;
}
static struct {