From f94a8cec1b6765769e2c88f33a787b9068ab29a3 Mon Sep 17 00:00:00 2001 From: Jefry Lagrange <jefry.reyes@gmail.com> Date: Sat, 22 Sep 2012 13:25:55 -0400 Subject: [PATCH] only accept file request from peers that we already sent the file to --- src/common/jingle_content.py | 5 ++++- src/common/jingle_ft.py | 4 +++- src/common/jingle_session.py | 11 +++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/common/jingle_content.py b/src/common/jingle_content.py index b2f3171f32..5aaff47899 100644 --- a/src/common/jingle_content.py +++ b/src/common/jingle_content.py @@ -15,6 +15,7 @@ Handles Jingle contents (XEP 0166) """ +import gajim import xmpp from jingle_transport import JingleTransportIBB @@ -194,11 +195,13 @@ class JingleContent(object): self.file_props.hash_: h = self._calcHash() file_tag.addChild(node=h) + pjid = gajim.get_jid_without_resource(self.session.peerjid) file_info = {'name' : self.file_props.name, 'file-name' : self.file_props.file_name, 'hash' : self.file_props.hash_, 'size' : self.file_props.size, - 'date' : self.file_props.date + 'date' : self.file_props.date, + 'peerjid' : pjid } self.session.connection.set_files_info(file_info) desc = file_tag.setTag('desc') diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py index d2de8f2460..fda8758aba 100644 --- a/src/common/jingle_ft.py +++ b/src/common/jingle_ft.py @@ -134,11 +134,13 @@ class JingleFileTransfer(JingleContent): payload=[self._calcHash()])]) checksum.setNamespace(xmpp.NS_JINGLE_FILE_TRANSFER) self.session.__session_info(checksum ) + pjid = gajim.get_jid_without_resource(self.session.peerjid) file_info = {'name' : self.file_props.name, 'file-name' : self.file_props.file_name, 'hash' : self.file_props.hash_, 'size' : self.file_props.size, - 'date' : self.file_props.date + 'date' : self.file_props.date, + 'peerjid' : pjid } self.session.connection.set_files_info(file_info) diff --git a/src/common/jingle_session.py b/src/common/jingle_session.py index 9507714c65..bfb7925a0f 100644 --- a/src/common/jingle_session.py +++ b/src/common/jingle_session.py @@ -513,7 +513,8 @@ class JingleSession(object): self._session_terminate(reason) raise xmpp.NodeProcessed else: - # Stop if we don't have the requested file + # Stop if we don't have the requested file or the peer is not + # allowed to request the file request = \ jingle.getTag('content').getTag('description').getTag('request') if request: @@ -524,10 +525,12 @@ class JingleSession(object): file_info = self.connection.get_files_info(hash_=h) elif n: file_info = self.connection.get_files_info(name=n) - if not file_info: - log.warning('The peer ' + self.peerjid + \ + pjid = gajim.get_jid_without_resource(self.peerjid) + if not file_info or file_info['peerjid'] != pjid: + log.warning('The peer ' + pjid + \ ' is requesting a ' + \ - 'file that we dont have') + 'file that we dont have or' + \ + 'it is not allowed to request') self.decline_session() raise xmpp.NodeProcessed # If there's no content we understand... -- GitLab