aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmproxy/flow.py3
-rw-r--r--test/test_flow.py13
2 files changed, 15 insertions, 1 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 571da836..4942d263 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -1575,6 +1575,9 @@ class FlowReader:
try:
while 1:
data = tnetstring.load(self.fo)
+ if tuple(data["version"]) != version.IVERSION:
+ v = ".".join(str(i) for i in data["version"])
+ raise FlowReadError("Incompatible serialized data version: %s"%v)
off = self.fo.tell()
yield Flow._from_state(data)
except ValueError:
diff --git a/test/test_flow.py b/test/test_flow.py
index a7ab7cc2..74cf79f8 100644
--- a/test/test_flow.py
+++ b/test/test_flow.py
@@ -1,7 +1,7 @@
import Queue, time
from cStringIO import StringIO
import email.utils
-from libmproxy import filt, flow, controller, utils
+from libmproxy import filt, flow, controller, utils, tnetstring
import tutils
import libpry
@@ -494,6 +494,17 @@ class uSerialize(libpry.AutoTree):
f = flow.FlowReadError("foo")
assert f.strerror == "foo"
+ def test_versioncheck(self):
+ f = tutils.tflow()
+ d = f._get_state()
+ d["version"] = (0, 0)
+ sio = StringIO()
+ tnetstring.dump(d, sio)
+ sio.seek(0)
+
+ r = flow.FlowReader(sio)
+ libpry.raises("version", list, r.stream())
+
class uFlowMaster(libpry.AutoTree):
def test_load_script(self):