)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"0cfc850b3fa4399fa6ebaef56f9d3d45533bac22","unresolved":false,"context_lines":[{"line_number":10,"context_line":"nova utils for comparing authentication tokens."},{"line_number":11,"context_line":"Original code taken from:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7374f2edc6f03c7da59cf73ae91a87147e53d0de"},{"line_number":16,"context_line":"Closes-bug: #1325128"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_a607ac1c","line":13,"range":{"start_line":13,"start_character":28,"end_line":13,"end_character":29},"updated":"2014-07-16 15:38:47.000000000","message":"Why not using the keystoneclient module instead of duplicating the bug?\n\nOr the function should be moved something to Oslo Incubator?\n\nIt\u0027s not a good idea to duplicate code, especially for code related to security.","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d8d773f03a7b7ec0ff95b7085d0a0a8d929c8309","unresolved":false,"context_lines":[{"line_number":10,"context_line":"nova utils for comparing authentication tokens."},{"line_number":11,"context_line":"Original code taken from:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7374f2edc6f03c7da59cf73ae91a87147e53d0de"},{"line_number":16,"context_line":"Closes-bug: #1325128"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_0003d876","line":13,"in_reply_to":"baada198_69ce47b6","updated":"2014-07-16 18:02:48.000000000","message":"This should probably be moved to Oslo down the road.  But for now getting this in quickly would be preferable.","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c4ebbee2b8917ab8160278c45ab9576037e1b1f2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"nova utils for comparing authentication tokens."},{"line_number":11,"context_line":"Original code taken from:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7374f2edc6f03c7da59cf73ae91a87147e53d0de"},{"line_number":16,"context_line":"Closes-bug: #1325128"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_69ce47b6","line":13,"in_reply_to":"baada198_a607ac1c","updated":"2014-07-16 15:44:51.000000000","message":"Agreed in principle so we might want to raise a bug for it, but since this is now a disclosed security bug - we should prioiritize merging the basic fix.","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"56644204be6d5685921575321cf9ab81dc19915a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"nova utils for comparing authentication tokens."},{"line_number":11,"context_line":"Original code taken from:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7374f2edc6f03c7da59cf73ae91a87147e53d0de"},{"line_number":16,"context_line":"Closes-bug: #1325128"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_60481488","line":13,"updated":"2014-07-16 18:07:31.000000000","message":"If you want to link to a line number you should pick a specific commit hash and not use master.  This link could end up being incorrect at any time.","commit_id":"08dd563b7a374f6abfc012bbe04688be30da3b61"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"54726034eb799c965197ac5c1ffff2cca9660fdc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"nova utils for comparing authentication tokens."},{"line_number":11,"context_line":"Original code taken from:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7374f2edc6f03c7da59cf73ae91a87147e53d0de"},{"line_number":16,"context_line":"Closes-bug: #1325128"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_2d1ff45c","line":13,"in_reply_to":"baada198_60481488","updated":"2014-07-16 18:36:57.000000000","message":"ideally should be using git.openstack.org for all git links and not github, as well","commit_id":"08dd563b7a374f6abfc012bbe04688be30da3b61"}],"nova/utils.py":[{"author":{"_account_id":7680,"name":"Alex Gaynor","email":"alex.gaynor@gmail.com","username":"alex_gaynor"},"change_message_id":"6580a01db689e2ba7d1d3726bcc6414b68032fe7","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"# candidate for inclusion in oslo."},{"line_number":1151,"context_line":"#"},{"line_number":1152,"context_line":"# Original code: master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":1153,"context_line":"if sys.version_info \u003e\u003d (3, 3):"},{"line_number":1154,"context_line":"    constant_time_compare \u003d hmac.compare_digest"},{"line_number":1155,"context_line":"else:"},{"line_number":1156,"context_line":"    def constant_time_compare(first, second):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_4a8418b1","line":1153,"updated":"2014-07-16 14:37:03.000000000","message":"It\u0027s probably preferable to check `hashattr(hmac, \"compare_digest\")` as this has been backported to 2.7.x","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"0cfc850b3fa4399fa6ebaef56f9d3d45533bac22","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"# candidate for inclusion in oslo."},{"line_number":1151,"context_line":"#"},{"line_number":1152,"context_line":"# Original code: master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":1153,"context_line":"if sys.version_info \u003e\u003d (3, 3):"},{"line_number":1154,"context_line":"    constant_time_compare \u003d hmac.compare_digest"},{"line_number":1155,"context_line":"else:"},{"line_number":1156,"context_line":"    def constant_time_compare(first, second):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_e68e04d0","line":1153,"in_reply_to":"baada198_4a8418b1","updated":"2014-07-16 15:38:47.000000000","message":"Agreed.","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"be9e716d2f0a67f26afd693b87e4e15453e1f257","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        if len(first) !\u003d len(second):"},{"line_number":1164,"context_line":"            return False"},{"line_number":1165,"context_line":"        result \u003d 0"},{"line_number":1166,"context_line":"        if six.PY3 and isinstance(first, bytes) and isinstance(second, bytes):"},{"line_number":1167,"context_line":"            for x, y in zip(first, second):"},{"line_number":1168,"context_line":"                result |\u003d x ^ y"},{"line_number":1169,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c674a038","line":1166,"updated":"2014-07-16 15:28:34.000000000","message":"Lol python 3 :(","commit_id":"eeebbccf5a59fabdc89834aef449a315c9fd96e9"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"56644204be6d5685921575321cf9ab81dc19915a","unresolved":false,"context_lines":[{"line_number":1149,"context_line":"# NOTE(gm) Constant time comparison taken from keystone. This is a"},{"line_number":1150,"context_line":"# candidate for inclusion in oslo."},{"line_number":1151,"context_line":"#"},{"line_number":1152,"context_line":"# Original code: master/keystoneclient/middleware/memcache_crypt.py#L86"},{"line_number":1153,"context_line":"if hasattr(hmac, \u0027compare_digest\u0027):"},{"line_number":1154,"context_line":"    constant_time_compare \u003d hmac.compare_digest"},{"line_number":1155,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c01e40bb","line":1152,"updated":"2014-07-16 18:07:31.000000000","message":"I would prefer this comment not be here, or at least not mention a line number.  This line could be incorrect at any time.","commit_id":"08dd563b7a374f6abfc012bbe04688be30da3b61"}]}
