git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tidying
[exim.git]
/
src
/
src
/
utf8.c
diff --git
a/src/src/utf8.c
b/src/src/utf8.c
index be5bcb0788176a22bc884502fda86a9ad2a5a27d..4647785b9da36fdb2492c15618568e85bf60cf91 100644
(file)
--- a/
src/src/utf8.c
+++ b/
src/src/utf8.c
@@
-52,6
+52,10
@@
uschar * s1, * s;
int rc;
#ifdef SUPPORT_I18N_2008
int rc;
#ifdef SUPPORT_I18N_2008
+/* Avoid lowercasing plain-ascii domains */
+if (!string_is_utf8(utf8))
+ return string_copy(utf8);
+
/* Only lowercase is accepted by the library call. A pity since we lose
any mixed-case annotation. This does not really matter for a domain. */
{
/* Only lowercase is accepted by the library call. A pity since we lose
any mixed-case annotation. This does not really matter for a domain. */
{
@@
-64,7
+68,7
@@
any mixed-case annotation. This does not really matter for a domain. */
break;
}
}
break;
}
}
-if ((rc = idn2_lookup_u8(
CCS
s, &s1, IDN2_NFC_INPUT)) != IDN2_OK)
+if ((rc = idn2_lookup_u8(
(const uint8_t *)
s, &s1, IDN2_NFC_INPUT)) != IDN2_OK)
{
if (err) *err = US idn2_strerror(rc);
return NULL;
{
if (err) *err = US idn2_strerror(rc);
return NULL;
@@
-94,6
+98,7
@@
string_domain_alabel_to_utf8(const uschar * alabel, uschar ** err)
const uschar * label;
int sep = '.';
uschar * s = NULL;
const uschar * label;
int sep = '.';
uschar * s = NULL;
+int size = 0, len = 0;
while (label = string_nextinlist(&alabel, &sep, NULL, 0))
if ( string_is_alabel(label)
while (label = string_nextinlist(&alabel, &sep, NULL, 0))
if ( string_is_alabel(label)
@@
-101,7
+106,7
@@
while (label = string_nextinlist(&alabel, &sep, NULL, 0))
)
return NULL;
else
)
return NULL;
else
- s = string_append_listele(s, '.', label);
+ s = string_append_listele(s,
&size, &len,
'.', label);
return s;
#else
return s;
#else
@@
-198,7
+203,7
@@
return NULL;
/* Whole address conversion.
The *err string pointer should be null before the call.
/* Whole address conversion.
The *err string pointer should be null before the call.
-Return NULL on
oee
ror, with (optional) errstring pointer filled in
+Return NULL on
er
ror, with (optional) errstring pointer filled in
*/
uschar *
*/
uschar *