Allow all UTF-8 characters
authorAlan T. DeKok <aland@freeradius.org>
Mon, 3 Nov 2014 16:45:27 +0000 (11:45 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 3 Nov 2014 16:47:14 +0000 (11:47 -0500)
src/modules/rlm_sql/rlm_sql.c

index 0b85d33..056ca05 100644 (file)
@@ -429,6 +429,24 @@ static size_t sql_escape_func(char *out, size_t outlen, const char *in)
        size_t len = 0;
 
        while (in[0]) {
+               size_t utf8_len;
+
+               /*
+                *      Allow all multi-byte UTF8 characters.
+                */
+               utf8_len = fr_utf8_char((uint8_t const *) in);
+               if (utf8_len > 1) {
+                       if (outlen <= utf8_len) break;
+
+                       memcpy(out, in, utf8_len);
+                       in += utf8_len;
+                       out += utf8_len;
+
+                       outlen -= utf8_len;
+                       len += utf8_len;
+                       continue;
+               }
+
                /*
                 *      Non-printable characters get replaced with their
                 *      mime-encoded equivalents.