commit 1767e28d61a97afeb3a55bbbe8f0bb3fd7e10e9b Author: Damian Johnson atagar@torproject.org Date: Mon Jan 20 16:43:26 2020 -0800
Fix gimp captcha check
BridgeDB's multiple layers of catch-alls made this take over an hour to solve. The surface level exception is...
Traceback (most recent call last): File "/home/atagar/Desktop/tor/bridgedb/bridgedb/test/test_distributors_moat_server.py", line 947, in test_render_POST_unexpired_with_qrcode self.assertIsNotNone(decoded.get('data')) File "/usr/lib/python3.5/unittest/case.py", line 1229, in assertIsNotNone self.fail(self._formatMessage(msg, standardMsg)) twisted.trial.unittest.FailTest: unexpectedly None
... but multiple layers down the actual error is...
Traceback (most recent call last): File "/home/atagar/Desktop/tor/bridgedb/bridgedb/test/test_distributors_moat_server.py", line 691, in test_withoutBlockIn self.resource.render(request) File "/usr/local/lib/python3.5/dist-packages/twisted/web/resource.py", line 265, in render return m(request) File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 716, in render_POST valid = self.checkSolution(challenge, solution, clientIP) File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 631, in checkSolution raise impossible File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 628, in checkSolution self.secretKey, clientHMACKey) File "/home/atagar/Desktop/tor/bridgedb/bridgedb/captcha.py", line 293, in check timestamp = answerBlob[:12].lstrip('0') builtins.TypeError: a bytes-like object is required, not 'str'
Test results changed as follows...
before: FAILED (skips=115, failures=17, successes=852) after: FAILED (skips=115, failures=9, successes=860) --- bridgedb/captcha.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/bridgedb/captcha.py b/bridgedb/captcha.py index fe0b876..6d8e8f7 100644 --- a/bridgedb/captcha.py +++ b/bridgedb/captcha.py @@ -289,10 +289,10 @@ class GimpCaptcha(Captcha): if hmacIsValid: try: answerBlob = secretKey.decrypt(encBlob) - timestamp = answerBlob[:12].lstrip('0') + timestamp = answerBlob[:12].lstrip(b'0') then = cls.sched.nextIntervalStarts(int(timestamp)) now = int(time.time()) - answer = answerBlob[12:] + answer = answerBlob[12:].decode('utf-8') except Exception as error: logging.warn(str(error)) else:
tor-commits@lists.torproject.org