From f4e85f7689ae95fc9881e6c84166b699ffad9ee9 Mon Sep 17 00:00:00 2001 From: moyamo Date: Mon, 21 Sep 2015 21:45:18 +0200 Subject: [PATCH] Try to prevent transwhat from crashing on malformed protobuf --- Spectrum2/backend.py | 11 ++++++++++- session.py | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Spectrum2/backend.py b/Spectrum2/backend.py index a027adc..342f0e4 100644 --- a/Spectrum2/backend.py +++ b/Spectrum2/backend.py @@ -4,6 +4,7 @@ import struct import sys import os +import logging import google.protobuf def WRAP(MESSAGE, TYPE): @@ -24,6 +25,7 @@ class SpectrumBackend: self.m_pingReceived = False self.m_data = "" self.m_init_res = 0 + self.logger = logging.getLogger(self.__class__.__name__) def handleMessage(self, user, legacyName, msg, nickname = "", xhtml = "", timestamp = ""): m = protocol_pb2.ConversationMessage() @@ -349,8 +351,15 @@ class SpectrumBackend: wrapper = protocol_pb2.WrapperMessage() - if (wrapper.ParseFromString(self.m_data[4:]) == False): + try: + parseFromString = wrapper.ParseFromString(self.m_data[4:]) + except: + parseFromString = True + self.logger.error("Parse from String exception") + + if parseFromString == False: self.m_data = self.m_data[expected_size+4:] + self.logger.error("Parse from String exception") return self.m_data = self.m_data[4+expected_size:] diff --git a/session.py b/session.py index d65361f..bdd9144 100644 --- a/session.py +++ b/session.py @@ -458,7 +458,7 @@ class Session(YowsupApp): else: room = sender try: - group = self.groups[room] + group = self.groups[self._lengthenGroupId(room)] self.logger.info("Group Message from %s to %s Groups: %s", group.nick , group , self.groups) self.backend.handleMessage(