Skip to content

Commit 09f7084

Browse files
authored
pywb 2.6.7 (#710)
* rewrite: add missing wordbreak to eval regex to avoid false positives, eg. '_eval' from being rewritten! * dependencies: bump gevent to 21.12.0 * inputrequest: remove unnecessary print * bump version to 2.6.7, update CHANGES for 2.6.7
1 parent 403167f commit 09f7084

File tree

6 files changed

+17
-4
lines changed

6 files changed

+17
-4
lines changed

CHANGES.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
pywb 2.6.7 changelist
2+
~~~~~~~~~~~~~~~~~~~~~
3+
4+
* dependency: bump gevent to latest (21.12.0)
5+
* rewrite: fix eval rewriting where '._eval' was accidentally being rewritten
6+
17
pywb 2.6.6 changelist
28
~~~~~~~~~~~~~~~~~~~~~
39

pywb/rewrite/regex_rewriters.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ def __init__(self):
8484

8585
check_loc = '((self.__WB_check_loc && self.__WB_check_loc(location, arguments)) || {}).href = '
8686

87+
eval_str = 'WB_wombat_runEval(function _____evalIsEvil(_______eval_arg$$) { return eval(_______eval_arg$$); }.bind(this)).eval'
88+
8789
self.local_objs = [
8890
'window',
8991
'self',
@@ -102,7 +104,7 @@ def __init__(self):
102104

103105
rules = [
104106
# rewriting 'eval(...)' - invocation
105-
(r'(?<!function\s)(?:^|[^,$])eval\s*\(', self.replace_str('WB_wombat_runEval(function _____evalIsEvil(_______eval_arg$$) { return eval(_______eval_arg$$); }.bind(this)).eval', 'eval'), 0),
107+
(r'(?<!function\s)(?:^|[^,$])\beval\s*\(', self.replace_str(eval_str, 'eval'), 0),
106108
# rewriting 'x = eval' - no invocation
107109
(r'(?<=[=,])\s*\beval\b\s*(?![(:.$])', self.replace_str('self.eval', 'eval'), 0),
108110
(r'(?<=\.)postMessage\b\(', self.add_prefix('__WB_pmw(self).'), 0),

pywb/rewrite/test/test_regex_rewriters.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,12 @@
254254
>>> _test_js_obj_proxy('x = obj.eval(a)')
255255
'x = obj.eval(a)'
256256
257+
>>> _test_js_obj_proxy('x = obj._eval(a)')
258+
'x = obj._eval(a)'
259+
260+
>>> _test_js_obj_proxy('x = obj.$eval(a)')
261+
'x = obj.$eval(a)'
262+
257263
258264
#=================================================================
259265
# XML Rewriting

pywb/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '2.6.6'
1+
__version__ = '2.6.7'
22

33
if __name__ == '__main__':
44
print(__version__)

pywb/warcserver/inputrequest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,6 @@ def handle_binary(query):
277277
try:
278278
query = self.json_parse(query)
279279
except Exception as e:
280-
print(e)
281280
query = ''
282281

283282
elif mime.startswith('text/plain'):

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ brotlipy
88
pyyaml
99
werkzeug
1010
webencodings
11-
gevent==20.9.0
11+
gevent==21.12.0
1212
webassets==0.12.1
1313
portalocker
1414
wsgiprox>=1.5.1

0 commit comments

Comments
 (0)