)]}'
{"keystone/common/ldap/fakeldap.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"9a5e62245eb3d93554a5c798b0d9167a563bbb67","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                else:"},{"line_number":266,"context_line":"                    if not isinstance(v, list):"},{"line_number":267,"context_line":"                        v \u003d [v]"},{"line_number":268,"context_line":"                    for val in list(v):"},{"line_number":269,"context_line":"                        try:"},{"line_number":270,"context_line":"                            values.remove(val)"},{"line_number":271,"context_line":"                        except ValueError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Bmds%3D","line":268,"updated":"2013-02-26 05:11:09.000000000","message":"Is this related to the migration work or did you just fix something else while doing the migration work?","commit_id":"ce655365627b26d8cc5bac80e4a98a5bce65499b"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"5508056538c13bae1fe9b63d5dd94235ad77b042","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                else:"},{"line_number":266,"context_line":"                    if not isinstance(v, list):"},{"line_number":267,"context_line":"                        v \u003d [v]"},{"line_number":268,"context_line":"                    for val in list(v):"},{"line_number":269,"context_line":"                        try:"},{"line_number":270,"context_line":"                            values.remove(val)"},{"line_number":271,"context_line":"                        except ValueError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BmX0%3D","line":268,"in_reply_to":"AAAAM3%2F%2Bmds%3D","updated":"2013-02-26 06:30:11.000000000","message":"This one is just stupid. No idea how it got here. Let me delete this.","commit_id":"ce655365627b26d8cc5bac80e4a98a5bce65499b"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"9a5e62245eb3d93554a5c798b0d9167a563bbb67","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                # filter the attributes by fields"},{"line_number":328,"context_line":"                attrs \u003d dict([(k, v) for k, v in attrs.iteritems()"},{"line_number":329,"context_line":"                              if not fields or k in fields])"},{"line_number":330,"context_line":"                objects.append((dn, copy.deepcopy(attrs)))"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        LOG.debug(\u0027FakeLdap search result: %s\u0027, objects)"},{"line_number":333,"context_line":"        return objects"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Bmdo%3D","line":330,"updated":"2013-02-26 05:11:09.000000000","message":"Is this related to the migration work or did you just fix something else while doing the migration work?","commit_id":"ce655365627b26d8cc5bac80e4a98a5bce65499b"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"5508056538c13bae1fe9b63d5dd94235ad77b042","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                # filter the attributes by fields"},{"line_number":328,"context_line":"                attrs \u003d dict([(k, v) for k, v in attrs.iteritems()"},{"line_number":329,"context_line":"                              if not fields or k in fields])"},{"line_number":330,"context_line":"                objects.append((dn, copy.deepcopy(attrs)))"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        LOG.debug(\u0027FakeLdap search result: %s\u0027, objects)"},{"line_number":333,"context_line":"        return objects"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BmX8%3D","line":330,"in_reply_to":"AAAAM3%2F%2Bmdo%3D","updated":"2013-02-26 06:30:11.000000000","message":"Migration (as can any code using fakeldap) iterate over values (members) treating the list as independent. So if we pass the same list object here, we can delete something from \"LDAP\" without accessing its API (by accident).","commit_id":"ce655365627b26d8cc5bac80e4a98a5bce65499b"}],"keystone/identity/backends/ldap/core.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"8183dcb1862ff8c9ef060d0a28b155f771179ffb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    pass"},{"line_number":85,"context_line":"            if not user_dns:"},{"line_number":86,"context_line":"                LOG.debug(\u0027No members found.\u0027)"},{"line_number":87,"context_line":"                continue"},{"line_number":88,"context_line":"            for user_dn in user_dns:"},{"line_number":89,"context_line":"                user_id \u003d self.user._dn_to_id(user_dn)"},{"line_number":90,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAN3%2F%2F37c%3D","line":87,"updated":"2013-03-08 00:13:22.000000000","message":"I believe it\u0027s a good idea to check for user_dns (i.e. if not user_dns:) before we try to remove a member from it i.e. (the if use_dumb_member: loop) ?","commit_id":"7c1cca1b1c64ea6b92b4467a01749cc027c0d4bf"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"eea3c59f68abcc1b8d061f8875b427b809b3245c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    pass"},{"line_number":85,"context_line":"            if not user_dns:"},{"line_number":86,"context_line":"                LOG.debug(\u0027No members found.\u0027)"},{"line_number":87,"context_line":"                continue"},{"line_number":88,"context_line":"            for user_dn in user_dns:"},{"line_number":89,"context_line":"                user_id \u003d self.user._dn_to_id(user_dn)"},{"line_number":90,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAN3%2F%2F3eg%3D","line":87,"in_reply_to":"AAAAN3%2F%2F37c%3D","updated":"2013-03-08 08:11:33.000000000","message":"This way we check if there were only dumb_member in user_dns and if we swap these ifs, we\u0027ll proceed with empty user_dns list.","commit_id":"7c1cca1b1c64ea6b92b4467a01749cc027c0d4bf"}]}
