diff options
-rw-r--r-- | src/strgen/strgen.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index d7a6ab0f0..f5a95b51e 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -709,6 +709,15 @@ static void HandleString(char *str, bool master) for (tmp = s; *tmp != '\0';) { size_t len = Utf8Validate(tmp); if (len == 0) error("Invalid UTF-8 sequence in '%s'", s); + + WChar c; + Utf8Decode(&c, tmp); + if (c <= 0x001F || // ASCII control character range + (c >= 0xE000 && c <= 0xF8FF) || // Private range + (c >= 0xFFF0 && c <= 0xFFFF)) { // Specials range + error("Unwanted UTF-8 character U+%04X in sequence '%s'", c, s); + } + tmp += len; } |