From 4074fb77501e53a4c8acfe9832cfb08469d5a185 Mon Sep 17 00:00:00 2001 From: Daniel Pavel Date: Thu, 18 Jul 2013 16:23:34 +0200 Subject: [PATCH] trim the codename to the declared length (fixes #90) --- lib/logitech_receiver/receiver.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/logitech_receiver/receiver.py b/lib/logitech_receiver/receiver.py index 7d03c70a..1bd12722 100644 --- a/lib/logitech_receiver/receiver.py +++ b/lib/logitech_receiver/receiver.py @@ -116,7 +116,9 @@ class PairedDevice(object): # do not support this call. codename = self.receiver.read_register(_R.receiver_info, 0x40 + self.number - 1) if codename: - self._codename = codename[2:].rstrip(b'\x00').decode('utf-8') + codename_length = ord(codename[1:2]) + codename = codename[2:2 + codename_length] + self._codename = codename.decode('ascii') self.descriptor = _DESCRIPTORS.get(self._codename) if self.descriptor: @@ -149,7 +151,9 @@ class PairedDevice(object): if self._codename is None: codename = self.receiver.read_register(_R.receiver_info, 0x40 + self.number - 1) if codename: - self._codename = codename[2:].rstrip(b'\x00').decode('utf-8') + codename_length = ord(codename[1:2]) + codename = codename[2:2 + codename_length] + self._codename = codename.decode('ascii') # if _log.isEnabledFor(_DEBUG): # _log.debug("device %d codename %s", self.number, self._codename) else: