[PATCH openbmc] python-dbus dbus.Byte.__str__ produces broken utf8

OpenBMC Patches openbmc-patches at stwcx.xyz
Wed Nov 18 14:50:29 AEDT 2015


From: Brad Bishop <bradleyb at us.ibm.com>

Byte to string simply copied the byte, which isn't valid
utf8 for non ascii values.  Since dbus.byte is an int subclass,
should just be using int's __str__  implementation anyway.
---
 .../python/python-dbus/bytes.patch                 | 37 ++++++++++++++++++++++
 .../python/python-dbus_1.2.0.bbappend              |  2 ++
 2 files changed, 39 insertions(+)
 create mode 100644 meta-phosphor/common/recipes-devtools/python/python-dbus/bytes.patch
 create mode 100644 meta-phosphor/common/recipes-devtools/python/python-dbus_1.2.0.bbappend

diff --git a/meta-phosphor/common/recipes-devtools/python/python-dbus/bytes.patch b/meta-phosphor/common/recipes-devtools/python/python-dbus/bytes.patch
new file mode 100644
index 0000000..d8a10a0
--- /dev/null
+++ b/meta-phosphor/common/recipes-devtools/python/python-dbus/bytes.patch
@@ -0,0 +1,37 @@
+Index: dbus-python-1.2.0/_dbus_bindings/bytes.c
+===================================================================
+--- dbus-python-1.2.0.orig/_dbus_bindings/bytes.c
++++ dbus-python-1.2.0/_dbus_bindings/bytes.c
+@@ -138,23 +138,6 @@ bad_range:
+     return NULL;
+ }
+ 
+-static PyObject *
+-Byte_tp_str(PyObject *self)
+-{
+-    long i = NATIVEINT_ASLONG(self);
+-    unsigned char str[2] = { 0, 0 };
+-
+-    if (i == -1 && PyErr_Occurred())
+-        return NULL;
+-    if (i < 0 || i > 255) {
+-        PyErr_SetString(PyExc_RuntimeError, "Integer outside range 0-255");
+-        return NULL;
+-    }
+-
+-    str[0] = (unsigned char)i;
+-    return PyUnicode_FromStringAndSize((char *)str, 1);
+-}
+-
+ PyTypeObject DBusPyByte_Type = {
+         PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0)
+         "dbus.Byte",
+@@ -171,7 +154,7 @@ PyTypeObject DBusPyByte_Type = {
+         0,                                      /* tp_as_mapping */
+         0,                                      /* tp_hash */
+         0,                                      /* tp_call */
+-        Byte_tp_str,                            /* tp_str */
++        0,                                      /* tp_str */
+         0,                                      /* tp_getattro */
+         0,                                      /* tp_setattro */
+         0,                                      /* tp_as_buffer */
diff --git a/meta-phosphor/common/recipes-devtools/python/python-dbus_1.2.0.bbappend b/meta-phosphor/common/recipes-devtools/python/python-dbus_1.2.0.bbappend
new file mode 100644
index 0000000..57d5ef4
--- /dev/null
+++ b/meta-phosphor/common/recipes-devtools/python/python-dbus_1.2.0.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+SRC_URI += "file://bytes.patch"
-- 
2.6.3




More information about the openbmc mailing list