)]}'
{"keystone/common/utils.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0aba9475dacb78ad7411adb1d6589dd26dd33006","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return passlib.hash.sha512_crypt.encrypt("},{"line_number":123,"context_line":"            password_utf8, rounds\u003dCONF.crypt_strength)"},{"line_number":124,"context_line":"    except passlib.exc.PasswordSizeError:"},{"line_number":125,"context_line":"        # NOTE(morganfainberg): This case will only occur if the"},{"line_number":126,"context_line":"        # max_password_length option is set to \u003e what passlib can handle. In"},{"line_number":127,"context_line":"        # this relatively narrow case, return HTTP 400 (Bad Request)instead of"},{"line_number":128,"context_line":"        # an HTTP 500 (Internal Server Error)."}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_95aa0b83","line":125,"updated":"2014-06-06 05:17:00.000000000","message":"Great comment! Very helpful","commit_id":"4bd130280229a86b118836695bbbb0e13c818264"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4c8ebb715213b4cd44ef936b3c9d29922b9461b9","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        return passlib.hash.sha512_crypt.encrypt("},{"line_number":123,"context_line":"            password_utf8, rounds\u003dCONF.crypt_strength)"},{"line_number":124,"context_line":"    except passlib.exc.PasswordSizeError:"},{"line_number":125,"context_line":"        # NOTE(morganfainberg): This case will only occur if the"},{"line_number":126,"context_line":"        # max_password_length option is set to \u003e what passlib can handle. In"},{"line_number":127,"context_line":"        # this relatively narrow case, return HTTP 400 (Bad Request)instead of"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_46156c3e","line":124,"updated":"2014-06-12 17:14:32.000000000","message":"Nice! According to the doc\n\n\"All hashes in Passlib will now throw PasswordSizeError if handed a password that’s larger than 4096 characters.\"\n\nWho the fucg in their right mind would create a password larger than 4096 chars?!","commit_id":"8d91f0c1d92a0336d71ec348d4691ae468aec824"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1d0a4c161f300a8339ed284761b41235a5ccc62a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        return passlib.hash.sha512_crypt.encrypt("},{"line_number":123,"context_line":"            password_utf8, rounds\u003dCONF.crypt_strength)"},{"line_number":124,"context_line":"    except passlib.exc.PasswordSizeError:"},{"line_number":125,"context_line":"        # NOTE(morganfainberg): This case will only occur if the"},{"line_number":126,"context_line":"        # max_password_length option is set to \u003e what passlib can handle. In"},{"line_number":127,"context_line":"        # this relatively narrow case, return HTTP 400 (Bad Request)instead of"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_26114004","line":124,"in_reply_to":"1ae5cdf2_46156c3e","updated":"2014-06-12 17:23:50.000000000","message":"You can also set a passlib max (env var) less than 4096 iirc.","commit_id":"8d91f0c1d92a0336d71ec348d4691ae468aec824"}],"keystone/tests/test_utils.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0aba9475dacb78ad7411adb1d6589dd26dd33006","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        long_password \u003d \u00270\u0027 * 9999999"},{"line_number":83,"context_line":"        self.config_fixture.config("},{"line_number":84,"context_line":"            group\u003d\u0027identity\u0027,"},{"line_number":85,"context_line":"            max_password_length\u003dpasslib.utils.MAX_PASSWORD_SIZE + 1)"},{"line_number":86,"context_line":"        self.assertRaises(exception.SecurityValidationSizeError,"},{"line_number":87,"context_line":"                          utils.hash_password,"},{"line_number":88,"context_line":"                          long_password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_7569fff7","line":85,"updated":"2014-06-06 05:17:00.000000000","message":"So by setting the configuration value of max_password_length to greater than MAX_PASSWORD_SIZE you are able to simulate the user bug that was reported. Very cool!","commit_id":"4bd130280229a86b118836695bbbb0e13c818264"}]}
