diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/kconfigini.cpp | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/src/core/kconfigini.cpp b/src/core/kconfigini.cpp index 39e59364..b6749731 100644 --- a/src/core/kconfigini.cpp +++ b/src/core/kconfigini.cpp @@ -673,7 +673,12 @@ QByteArray KConfigIniBackend::stringToPrintable(const QByteArray &aString, Strin          switch (s[i]) {          default:              // The \n, \t, \r cases (all < 32) are handled below; we can ignore them here -            if (((unsigned char)s[i]) < 32 || ((unsigned char)s[i]) >= 127) { +            if (((unsigned char)s[i]) < 32) { +                goto doEscape; +            } +            // GroupString and KeyString should be valid UTF-8, but ValueString +            // can be a bytearray with non-UTF-8 bytes that should be escaped. +            if (type == ValueString && ((unsigned char)s[i]) >= 127) {                  goto doEscape;              }              *data++ = s[i]; | 
