diff options
Diffstat (limited to '_dbus_bindings/message-append.c')
-rw-r--r-- | _dbus_bindings/message-append.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/_dbus_bindings/message-append.c b/_dbus_bindings/message-append.c index 27522bf..89ca746 100644 --- a/_dbus_bindings/message-append.c +++ b/_dbus_bindings/message-append.c @@ -569,60 +569,12 @@ _message_iter_append_string(DBusMessageIter *appender, return -1; /* Validate UTF-8, strictly */ -#ifdef HAVE_DBUS_VALIDATE_UTF8 if (!dbus_validate_utf8(s, NULL)) { PyErr_SetString(PyExc_UnicodeError, "String parameters " "to be sent over D-Bus must be valid UTF-8 " "with no noncharacter code points"); return -1; } -#else - { - PyObject *back_to_unicode; - PyObject *utf32; - Py_ssize_t i; - - /* This checks for syntactically valid UTF-8, but does not check - * for noncharacters (U+nFFFE, U+nFFFF for any n, or U+FDD0..U+FDEF). - */ - back_to_unicode = PyUnicode_DecodeUTF8(s, PyBytes_GET_SIZE(utf8), - "strict"); - - if (!back_to_unicode) { - return -1; - } - - utf32 = PyUnicode_AsUTF32String(back_to_unicode); - Py_CLEAR(back_to_unicode); - - if (!utf32) { - return -1; - } - - for (i = 0; i < PyBytes_GET_SIZE(utf32) / 4; i++) { - dbus_uint32_t *p; - - p = (dbus_uint32_t *) (PyBytes_AS_STRING(utf32)) + i; - - if (/* noncharacters U+nFFFE, U+nFFFF */ - (*p & 0xFFFF) == 0xFFFE || - (*p & 0xFFFF) == 0xFFFF || - /* noncharacters U+FDD0..U+FDEF */ - (*p >= 0xFDD0 && *p <= 0xFDEF) || - /* surrogates U+D800..U+DBFF (low), U+DC00..U+DFFF (high) */ - (*p >= 0xD800 && *p <= 0xDFFF) || - (*p >= 0x110000)) { - Py_CLEAR(utf32); - PyErr_SetString(PyExc_UnicodeError, "String parameters " - "to be sent over D-Bus must be valid UTF-8 " - "with no noncharacter code points"); - return -1; - } - } - - Py_CLEAR(utf32); - } -#endif DBG("Performing actual append: string (from unicode) %s", s); if (!dbus_message_iter_append_basic(appender, sig_type, &s)) { |