aboutsummaryrefslogtreecommitdiffstats
path: root/pathod/language
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2016-05-15 10:40:21 -0700
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2016-05-15 10:41:54 -0700
commit55a17b2ed3c506e240e35ae8bff432e08e588787 (patch)
tree77923e1e9ac059d1132b5e00f7f143345b6d4a39 /pathod/language
parent2887480bcb72086b982a6954b930dc27115b97f8 (diff)
downloadmitmproxy-55a17b2ed3c506e240e35ae8bff432e08e588787.tar.gz
mitmproxy-55a17b2ed3c506e240e35ae8bff432e08e588787.tar.bz2
mitmproxy-55a17b2ed3c506e240e35ae8bff432e08e588787.zip
fix encoding error on *too* random bytes
This should fix things like: def __init__(self, val): self.val = val.decode("string_escape") ValueError: Trailing \ in string pathod/language/base.py:108: ValueError test/pathod/test_language_websocket.py:83: in fr return netlib.websockets.Frame.from_bytes(tutils.render(wf, settings)) test/pathod/tutils.py:123: in render r = r.resolve(settings) pathod/language/websockets.py:179: in resolve Key(base.TokValueLiteral(os.urandom(4)))
Diffstat (limited to 'pathod/language')
-rw-r--r--pathod/language/websockets.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/pathod/language/websockets.py b/pathod/language/websockets.py
index ea7c870e..09443a95 100644
--- a/pathod/language/websockets.py
+++ b/pathod/language/websockets.py
@@ -1,4 +1,6 @@
import os
+import random
+import string
import netlib.websockets
import pyparsing as pp
from . import base, generators, actions, message
@@ -175,8 +177,10 @@ class WebsocketFrame(message.Message):
Mask(True)
)
if not self.knone and self.mask and self.mask.value and not self.key:
+ allowed_chars = string.ascii_letters + string.digits
+ k = ''.join([allowed_chars[random.randrange(0, len(allowed_chars))] for i in range(4)])
tokens.append(
- Key(base.TokValueLiteral(os.urandom(4)))
+ Key(base.TokValueLiteral(k))
)
return self.__class__(
[i.resolve(settings, self) for i in tokens]