Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 383463 | Differences between
and this patch

Collapse All | Expand All

(-)gajim-0.14.4.orig/src/common/connection_handlers.py (+2 lines)
Lines 1607-1612 Link Here
1607
            if keyID:
1607
            if keyID:
1608
                def decrypt_thread(encmsg, keyID):
1608
                def decrypt_thread(encmsg, keyID):
1609
                    decmsg = self.gpg.decrypt(encmsg, keyID)
1609
                    decmsg = self.gpg.decrypt(encmsg, keyID)
1610
                    decmsg = self.connection.Dispatcher.replace_non_character(
1611
                        decmsg)
1610
                    # \x00 chars are not allowed in C (so in GTK)
1612
                    # \x00 chars are not allowed in C (so in GTK)
1611
                    msgtxt = helpers.decode_string(decmsg.replace('\x00', ''))
1613
                    msgtxt = helpers.decode_string(decmsg.replace('\x00', ''))
1612
                    encrypted = 'xep27'
1614
                    encrypted = 'xep27'
(-)gajim-0.14.4.orig/src/common/stanza_session.py (+6 lines)
Lines 375-380 Link Here
375
        for child in parsed.getChildren():
375
        for child in parsed.getChildren():
376
            stanza.addChild(node=child)
376
            stanza.addChild(node=child)
377
377
378
        # replace non-character unicode
379
        body = stanza.getBody()
380
        if body:
381
            stanza.setBody(
382
                self.conn.connection.Dispatcher.replace_non_character(body))
383
378
        return stanza
384
        return stanza
379
385
380
    def decrypt(self, ciphertext):
386
    def decrypt(self, ciphertext):
(-)gajim-0.14.4.orig/src/common/xmpp/dispatcher_nb.py (-1 / +23 lines)
Lines 20-26 Link Here
20
different handlers to different XMPP stanzas and namespaces
20
different handlers to different XMPP stanzas and namespaces
21
"""
21
"""
22
22
23
import simplexml, sys, locale
23
import re, simplexml, sys, locale
24
from xml.parsers.expat import ExpatError
24
from xml.parsers.expat import ExpatError
25
from plugin import PlugIn
25
from plugin import PlugIn
26
from protocol import (NS_STREAMS, NS_XMPP_STREAMS, NS_HTTP_BIND, Iq, Presence,
26
from protocol import (NS_STREAMS, NS_XMPP_STREAMS, NS_HTTP_BIND, Iq, Presence,
Lines 89-94 Link Here
89
                self.UnregisterHandler, self.RegisterProtocol,
89
                self.UnregisterHandler, self.RegisterProtocol,
90
                self.SendAndWaitForResponse, self.SendAndCallForResponse,
90
                self.SendAndWaitForResponse, self.SendAndCallForResponse,
91
                self.getAnID, self.Event, self.send]
91
                self.getAnID, self.Event, self.send]
92
	
93
        # \ufddo -> \ufdef range
94
        c = u'\ufdd0'
95
        r = c.encode('utf8')
96
        while (c < u'\ufdef'):
97
                c = unichr(ord(c) + 1)
98
                r += '|' + c.encode('utf8')
99
100
        # \ufffe-\uffff, \u1fffe-\u1ffff, ..., \u10fffe-\u10ffff
101
        c = u'\ufffe'
102
        r += '|' + c.encode('utf8')
103
        r += '|' + unichr(ord(c) + 1).encode('utf8')
104
        while (c < u'\U0010fffe'):
105
                c = unichr(ord(c) + 0x10000)
106
                r += '|' + c.encode('utf8')
107
                r += '|' + unichr(ord(c) + 1).encode('utf8')
108
109
        self.invalid_chars_re = re.compile(r)
92
110
93
    def getAnID(self):
111
    def getAnID(self):
94
        global outgoingID
112
        global outgoingID
Lines 174-179 Link Here
174
            raise ValueError('Incorrect stream start: (%s,%s). Terminating.'
192
            raise ValueError('Incorrect stream start: (%s,%s). Terminating.'
175
                    % (tag, ns))
193
                    % (tag, ns))
176
194
195
    def replace_non_character(self, data):
196
        return re.sub(self.invalid_chars_re, u'\ufffd'.encode('utf-8'), data)
197
177
    def ProcessNonBlocking(self, data):
198
    def ProcessNonBlocking(self, data):
178
        """
199
        """
179
        Check incoming stream for data waiting
200
        Check incoming stream for data waiting
Lines 189-194 Link Here
189
        # disconnect method will never be called.
210
        # disconnect method will never be called.
190
        # Is this intended?
211
        # Is this intended?
191
        # also look at transports start_disconnect()
212
        # also look at transports start_disconnect()
213
        data = self.replace_non_character(data)
192
        for handler in self._cycleHandlers:
214
        for handler in self._cycleHandlers:
193
            handler(self)
215
            handler(self)
194
        if len(self._pendingExceptions) > 0:
216
        if len(self._pendingExceptions) > 0:

Return to bug 383463