summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormsoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>2007-02-10 02:27:12 +0000
committermsoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>2007-02-10 02:27:12 +0000
commit07906cdbd96865cb9d3688cc1e463d7730d62c20 (patch)
tree4b6dd14e9c946830138eda20fadb295652fd5c08
parentf53e68bcd501e780a6c3ea53b84b089a10957734 (diff)
downloadtftpy-07906cdbd96865cb9d3688cc1e463d7730d62c20.tar.gz
Added a check for rogue packets in the server.
git-svn-id: https://tftpy.svn.sourceforge.net/svnroot/tftpy/trunk@59 63283fd4-ec1e-0410-9879-cb7f675518da
-rw-r--r--tftpy/TftpServer.py14
-rw-r--r--tftpy/TftpShared.py1
2 files changed, 14 insertions, 1 deletions
diff --git a/tftpy/TftpServer.py b/tftpy/TftpServer.py
index cb5d613..5b5d705 100644
--- a/tftpy/TftpServer.py
+++ b/tftpy/TftpServer.py
@@ -271,6 +271,18 @@ class TftpServerHandler(TftpSession):
rport)
raise TftpException, "Unsupported mode: %s" % recvpkt.mode
+ # test host/port of client end
+ if self.host != raddress or self.port != rport:
+ self.senderror(self.sock,
+ TftpErrors.UnknownTID,
+ raddress,
+ rport)
+ logger.error("Expected traffic from %s:%s but received it "
+ "from %s:%s instead."
+ % (self.host, self.port, raddress, rport))
+ self.errors += 1
+ return
+
if self.state.state == 'rrq':
logger.debug("Received RRQ. Composing response.")
self.filename = self.root + os.sep + recvpkt.filename
@@ -310,7 +322,6 @@ class TftpServerHandler(TftpSession):
% (self.key, blksize))
self.options['blksize'] = DEF_BLKSIZE
- logger.debug("Composing and sending OACK packet")
self.send_oack()
elif len(recvpkt.options.keys()) > 0:
@@ -415,6 +426,7 @@ class TftpServerHandler(TftpSession):
self.sock.sendto(dat.encode().buffer, (self.host, self.port))
self.timesent = time.time()
+ # FIXME - should these be factored-out into the session class?
def send_oack(self):
"""This method sends an OACK packet based on current params."""
logger.debug("Composing and sending OACK packet")
diff --git a/tftpy/TftpShared.py b/tftpy/TftpShared.py
index c4d4a1c..2871151 100644
--- a/tftpy/TftpShared.py
+++ b/tftpy/TftpShared.py
@@ -1,4 +1,5 @@
import logging
+from tftpy import TftpPacketERR
LOG_LEVEL = logging.NOTSET
MIN_BLKSIZE = 8