)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0b9133beed7455b0b143f82a58795395dac77e5b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"symlink, and if the backing object was *itself* a symlink, that will be"},{"line_number":16,"context_line":"authed separately."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ifd744044421ef2ca917ce9502b155a6514ce8ecf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff570b3c_1d6397b3","line":18,"updated":"2020-05-21 21:09:10.000000000","message":"Closes-Bug: #1880013","commit_id":"4e0aa29776acc7d138635925978bc4d18bcba941"}],"swift/common/middleware/symlink.py":[{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"a8b8904fd78159ed2ea2f6e64f96e283ca51e0be","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                req.headers.get(\u0027X-Backend-Allow-Reserved-Names\u0027))"},{"line_number":452,"context_line":"            req.headers[\u0027X-Backend-Allow-Reserved-Names\u0027] \u003d \u0027true\u0027"},{"line_number":453,"context_line":"            old_auth \u003d req.environ.get(\u0027swift.authorize\u0027, preauth)"},{"line_number":454,"context_line":"            req.environ[\u0027swift.authorize\u0027] \u003d lambda req: None"},{"line_number":455,"context_line":"            resp \u003d self._app_call(req.environ)"},{"line_number":456,"context_line":"            req.environ[\u0027swift.authorize\u0027] \u003d old_auth"},{"line_number":457,"context_line":"            if not already_allowed:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_384deb3d","line":454,"range":{"start_line":454,"start_character":45,"end_line":454,"end_character":61},"updated":"2020-04-29 19:57:22.000000000","message":"could use preauth here","commit_id":"4e0aa29776acc7d138635925978bc4d18bcba941"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7f332b945f8f057e66008b9fd8bee7387b876eba","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                req.headers.get(\u0027X-Backend-Allow-Reserved-Names\u0027))"},{"line_number":452,"context_line":"            req.headers[\u0027X-Backend-Allow-Reserved-Names\u0027] \u003d \u0027true\u0027"},{"line_number":453,"context_line":"            old_auth \u003d req.environ.get(\u0027swift.authorize\u0027, preauth)"},{"line_number":454,"context_line":"            req.environ[\u0027swift.authorize\u0027] \u003d lambda req: None"},{"line_number":455,"context_line":"            resp \u003d self._app_call(req.environ)"},{"line_number":456,"context_line":"            req.environ[\u0027swift.authorize\u0027] \u003d old_auth"},{"line_number":457,"context_line":"            if not already_allowed:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_69fcc73d","line":454,"range":{"start_line":454,"start_character":45,"end_line":454,"end_character":61},"in_reply_to":"1f493fa4_384deb3d","updated":"2020-04-30 04:19:06.000000000","message":"Bah, I\u0027d meant to :P\n\nFirst, I probably oughta look at how hard it\u0027d be to use our \"standard\" preauth mechanisms, though.","commit_id":"4e0aa29776acc7d138635925978bc4d18bcba941"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4af083a5ddc1f5a3b9011bd2e18eefaa9adf7b2a","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                subreq_meth \u003d make_pre_authed_request"},{"line_number":470,"context_line":"                subreq_headers \u003d {"},{"line_number":471,"context_line":"                    \u0027X-Backend-Allow-Reserved-Names\u0027: \u0027true\u0027,"},{"line_number":472,"context_line":"                }"},{"line_number":473,"context_line":"            else:"},{"line_number":474,"context_line":"                subreq_meth \u003d make_subrequest"},{"line_number":475,"context_line":"                subreq_headers \u003d req.headers"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_c0ac92f0","line":472,"updated":"2020-05-21 22:13:26.000000000","message":"I\u0027m honestly a little surprised I got away this, maybe some test will fail that i missed or there\u0027s some untested behavior\n\nbut nevertheless I\u0027d rather whitelist headers than forgot something important in the black list","commit_id":"87caae284da9a2551b05384477cc93405201f697"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ea337b3a6652dbb8650ce1add751666b48290c11","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                subreq_meth \u003d make_pre_authed_request"},{"line_number":470,"context_line":"                subreq_headers \u003d {"},{"line_number":471,"context_line":"                    \u0027X-Backend-Allow-Reserved-Names\u0027: \u0027true\u0027,"},{"line_number":472,"context_line":"                }"},{"line_number":473,"context_line":"            else:"},{"line_number":474,"context_line":"                subreq_meth \u003d make_subrequest"},{"line_number":475,"context_line":"                subreq_headers \u003d req.headers"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_a06ebe93","line":472,"in_reply_to":"ff570b3c_c0ac92f0","updated":"2020-05-21 22:27:57.000000000","message":"I was just about to ask about this ;-) I was kind of expecting a\n\n subreq_headers.update(req.headers)\n\nafter this. I guess the most-obvious place i could see this causing trouble is with Range... sure enough, it\u0027ll return the whole target object.\n\nWe only do this on GET and HEAD, right? Are there any \"dangerous\" headers we need to worry about?","commit_id":"87caae284da9a2551b05384477cc93405201f697"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ea337b3a6652dbb8650ce1add751666b48290c11","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                    self._response_header_value(SYMLOOP_EXTEND)):"},{"line_number":502,"context_line":"                self._loop_count +\u003d 1"},{"line_number":503,"context_line":"            return self._recursive_get_head(new_req, target_etag\u003dresp_etag,"},{"line_number":504,"context_line":"                                            orig_req\u003dreq)"},{"line_number":505,"context_line":"        else:"},{"line_number":506,"context_line":"            final_etag \u003d self._response_header_value(\u0027etag\u0027)"},{"line_number":507,"context_line":"            if final_etag and target_etag and target_etag !\u003d final_etag:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_6081464b","line":504,"range":{"start_line":504,"start_character":53,"end_line":504,"end_character":56},"updated":"2020-05-21 22:27:57.000000000","message":"Not orig_req? I guess it doesn\u0027t really matter, just so long as it\u0027s not new_req.","commit_id":"87caae284da9a2551b05384477cc93405201f697"}],"test/functional/test_object_versioning.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"db7b45d107c5c7d459f8cfe75757e8f0ab307100","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                     parms\u003d{\u0027version-id\u0027: version_id})"},{"line_number":357,"context_line":"        self.assertEqual(403, cm.exception.status)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # If it\u0027s pointing to a symlink that points elsewhere, that still needs to be authed"},{"line_number":360,"context_line":"        tgt_name \u003d Utils.create_name()"},{"line_number":361,"context_line":"        self.env.unversioned_container.file(tgt_name).write(b\u0027link\u0027)"},{"line_number":362,"context_line":"        sym_tgt_header \u003d quote(unquote(\u0027%s/%s\u0027 % (self.env.unversioned_container.name, tgt_name)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_f5db8e4b","line":359,"updated":"2020-04-29 19:11:23.000000000","message":"pep8: E501 line too long (92 \u003e 79 characters)","commit_id":"4e0aa29776acc7d138635925978bc4d18bcba941"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"db7b45d107c5c7d459f8cfe75757e8f0ab307100","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        # If it\u0027s pointing to a symlink that points elsewhere, that still needs to be authed"},{"line_number":360,"context_line":"        tgt_name \u003d Utils.create_name()"},{"line_number":361,"context_line":"        self.env.unversioned_container.file(tgt_name).write(b\u0027link\u0027)"},{"line_number":362,"context_line":"        sym_tgt_header \u003d quote(unquote(\u0027%s/%s\u0027 % (self.env.unversioned_container.name, tgt_name)))"},{"line_number":363,"context_line":"        obj.write(hdrs\u003d{\u0027X-Symlink-Target\u0027: sym_tgt_header})"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        # So, user1\u0027s good..."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_d5de523c","line":362,"updated":"2020-04-29 19:11:23.000000000","message":"pep8: E501 line too long (98 \u003e 79 characters)","commit_id":"4e0aa29776acc7d138635925978bc4d18bcba941"}]}
