X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/9427e87923288dfe6fdf80011f77bf4a135898ac..4226691b79845d9b41041e2f64a3a241dcb99f4d:/src/src/utf8.c diff --git a/src/src/utf8.c b/src/src/utf8.c index be5bcb078..255383051 100644 --- a/src/src/utf8.c +++ b/src/src/utf8.c @@ -52,6 +52,10 @@ uschar * s1, * s; 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. */ { @@ -94,6 +98,7 @@ string_domain_alabel_to_utf8(const uschar * alabel, uschar ** err) 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) @@ -101,7 +106,7 @@ while (label = string_nextinlist(&alabel, &sep, NULL, 0)) ) return NULL; else - s = string_append_listele(s, '.', label); + s = string_append_listele(s, &size, &len, '.', label); return s; #else @@ -198,7 +203,7 @@ return NULL; /* Whole address conversion. The *err string pointer should be null before the call. -Return NULL on oeeror, with (optional) errstring pointer filled in +Return NULL on error, with (optional) errstring pointer filled in */ uschar *