[Python-modules-team] Bug#876728: UnicodeDecodeError in Xlib/xobject/drawable.py

Mike Gabriel mike.gabriel at das-netzwerkteam.de
Mon Sep 25 10:31:02 UTC 2017


Package: python-xlib
Severity: important
Tags: patch
X-Debbugs-Cc: andrewsh at debian.org


Hi,
CC:-ing Andrew Shadura, as he has been the last uploader in  
debian/changelog of python-xlibs.

recently, in Debian stretch, I started seeing errors like below with  
my X2Go client implementation pyhoca-gui / pyhoca-cli.

I started porting pyhoca and python-x2go (the underlying module) to  
Python 3 over the last weekend and realized that in Python 3 the  
issues did not occur anymore.

However, in Python 2 they persist:

```
Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 534, in run
     result = self._run(*self.args, **self.kwargs)
   File  
"/home/mike/MyDocuments/4projects/x2go-upstream/pyhoca-gui/x2go/backends/terminal/plain.py", line 1092, in  
_find_session_window
     window = utils.find_session_window(self.session_info.name)
   File  
"/home/mike/MyDocuments/4projects/x2go-upstream/pyhoca-gui/x2go/utils.py",  
line 639, in find_session_window
     name = window.get_wm_name()
   File "/usr/lib/python2.7/dist-packages/Xlib/xobject/drawable.py",  
line 636, in get_wm_name
     d = self.get_full_property(Xatom.WM_NAME, Xatom.STRING)
   File "/usr/lib/python2.7/dist-packages/Xlib/xobject/drawable.py",  
line 458, in get_full_property
     val = val + prop.value
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position  
29: ordinal not in range(128)
<Greenlet at 0x7fa0fb3315f0: <bound method  
X2GoTerminalSession._find_session_window of  
<x2go.backends.terminal.plain.X2GoTerminalSession object at  
0x7fa0f9490410>>(timeout=60)> failed with UnicodeDecodeError
```

The underlying cause for this issue is in Xlib/protocol/rq.py. The  
patch below fixes the issue:

The patch gets applied in String8.parse_binary_value().

```
--- rq.py	2015-08-25 17:58:11.000000000 +0200
+++ rq.py.fixed	2017-09-25 12:18:58.172941197 +0200
@@ -415,8 +415,14 @@
              s = s.decode('UTF-8')
          except UnicodeDecodeError:
              pass  # return as bytes
-        return s, data[slen:]

+        d = data[slen:]
+        try:
+            d = d.decode('UTF-8')
+        except UnicodeDecodeError:
+            pass
+
+        return s, d

```

Without the above patch, sometimes <str> types get returned, sometime  
<unicode> types. With the above patch, everything is returned as  
<unicode>.

Ideally, this fix should also go into Debian stretch. Thanks!

As no real persons seems to be maintaining the python-xlib package (no  
Uploaders: field), nor has it been orphaned, I'll consider fixing the  
above issue myself as an NMU or team upload (unless someone replies to  
my report).

I'd be really happy about a second pair of eyes to look at this issue,  
before I upload this.

Thanks!

Mike

-- 

DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
mobile: +49 (1520) 1976 148
landline: +49 (4354) 8390 139

GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22  0782 9AF4 6B30 2577 1B31
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 851 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.alioth.debian.org/pipermail/python-modules-team/attachments/20170925/805a91fe/attachment.sig>


More information about the Python-modules-team mailing list