Philipp Hörist pushed to branch master at gajim / gajim

Commits:
3a6e1ac9 by Philipp Hörist at 2017-10-17T20:36:27+02:00
Catch exception for invalid avatars

- - - - -


3 changed files:

- gajim/common/connection_handlers.py
- gajim/common/connection_handlers_events.py
- gajim/vcard.py


Changes:

=====================================
gajim/common/connection_handlers.py
=====================================
--- a/gajim/common/connection_handlers.py
+++ b/gajim/common/connection_handlers.py
@@ -30,6 +30,7 @@
 
 import os
 import base64
+import binascii
 import operator
 import hashlib
 
@@ -445,7 +446,11 @@ class ConnectionVcard:
                 avatar_sha = None
                 photo_decoded = None
             else:
-                photo_decoded = base64.b64decode(photo.encode('utf-8'))
+                try:
+                    photo_decoded = base64.b64decode(photo.encode('utf-8'))
+                except binascii.Error as error:
+                    app.log('avatar').warning('Invalid Avatar: %s', error)
+                    return None, None
                 avatar_sha = hashlib.sha1(photo_decoded).hexdigest()
 
         return avatar_sha, photo_decoded


=====================================
gajim/common/connection_handlers_events.py
=====================================
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -24,6 +24,7 @@
 from calendar import timegm
 import datetime
 import hashlib
+import binascii
 import base64
 import hmac
 import logging
@@ -599,7 +600,11 @@ class PubsubAvatarReceivedEvent(nec.NetworkIncomingEvent):
             log.warning('Received malformed avatar data via pubsub')
             log.warning(self.stanza)
             return
-        self.data = base64.b64decode(self.data.encode('utf-8'))
+        try:
+            self.data = base64.b64decode(self.data.encode('utf-8'))
+        except binascii.Error as err:
+            log.warning('Received malformed avatar data via pubsub: %s' % err)
+            return
 
         return True
 


=====================================
gajim/vcard.py
=====================================
--- a/gajim/vcard.py
+++ b/gajim/vcard.py
@@ -36,6 +36,7 @@ from gi.repository import GLib
 from gi.repository import Gdk
 from gi.repository import GdkPixbuf
 import base64
+import binascii
 import time
 import locale
 import os
@@ -210,7 +211,12 @@ class VcardWindow:
                 photo_encoded = vcard[i]['BINVAL']
                 if photo_encoded == '':
                     continue
-                photo_decoded = base64.b64decode(photo_encoded.encode('utf-8'))
+                try:
+                    photo_decoded = base64.b64decode(
+                        photo_encoded.encode('utf-8'))
+                except binascii.Error as error:
+                    app.log('avatar').warning('Invalid Avatar: %s', error)
+                    continue
                 pixbuf = gtkgui_helpers.get_pixbuf_from_data(photo_decoded)
                 if pixbuf is None:
                     continue



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/3a6e1ac9fc7d0f1f1a5f690c4bb3e0ee3aea9422

---
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/3a6e1ac9fc7d0f1f1a5f690c4bb3e0ee3aea9422
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to