string.c: do not interpret '\\' before '\0' (CVE-2019-15846)
[exim.git] / src / src / utf8.c
index 7b7b88f66ef462c4bdb7c1b3fed990cec8fdfd21..16a53037de383165904c11bb33aee7d532e76253 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) Jeremy Harris 2015, 2016 */
+/* Copyright (c) Jeremy Harris 2015 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 
@@ -68,7 +68,7 @@ any mixed-case annotation.  This does not really matter for a domain. */
     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;
@@ -97,7 +97,7 @@ string_domain_alabel_to_utf8(const uschar * alabel, uschar ** err)
 #ifdef SUPPORT_I18N_2008
 const uschar * label;
 int sep = '.';
-uschar * s = NULL;
+gstring * g = NULL;
 
 while (label = string_nextinlist(&alabel, &sep, NULL, 0))
   if (  string_is_alabel(label)
@@ -105,8 +105,8 @@ while (label = string_nextinlist(&alabel, &sep, NULL, 0))
      )
     return NULL;
   else
-    s = string_append_listele(s, '.', label);
-return s;
+    g = string_append_listele(g, '.', label);
+return string_from_gstring(g);
 
 #else