Merge pull request #47575 from justinsb/fix_36902

Automatic merge from submit-queue (batch tested with PRs 47915, 47856, 44086, 47575, 47475)

AWS: Fix suspicious loop comparing permissions

Because we only ever call it with a single UserId/GroupId, this would
not have been a problem in practice, but this fixes the code.

Fix #36902 

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue
2017-06-23 04:06:25 -07:00
committed by GitHub
2 changed files with 20 additions and 3 deletions

View File

@@ -2046,17 +2046,22 @@ func ipPermissionExists(newPermission, existing *ec2.IpPermission, compareGroupU
break break
} }
} }
if found == false { if !found {
return false return false
} }
} }
for _, leftPair := range newPermission.UserIdGroupPairs { for _, leftPair := range newPermission.UserIdGroupPairs {
found := false
for _, rightPair := range existing.UserIdGroupPairs { for _, rightPair := range existing.UserIdGroupPairs {
if isEqualUserGroupPair(leftPair, rightPair, compareGroupUserIDs) { if isEqualUserGroupPair(leftPair, rightPair, compareGroupUserIDs) {
return true found = true
break
} }
} }
return false if !found {
return false
}
} }
return true return true

View File

@@ -879,6 +879,18 @@ func TestIpPermissionExistsHandlesMultipleGroupIds(t *testing.T) {
if equals { if equals {
t.Errorf("Should have not been considered equal since first is not in the second array of groups") t.Errorf("Should have not been considered equal since first is not in the second array of groups")
} }
// The first pair matches, but the second does not
newIpPermission2 := ec2.IpPermission{
UserIdGroupPairs: []*ec2.UserIdGroupPair{
{GroupId: aws.String("firstGroupId")},
{GroupId: aws.String("fourthGroupId")},
},
}
equals = ipPermissionExists(&newIpPermission2, &oldIpPermission, false)
if equals {
t.Errorf("Should have not been considered equal since first is not in the second array of groups")
}
} }
func TestIpPermissionExistsHandlesRangeSubsets(t *testing.T) { func TestIpPermissionExistsHandlesRangeSubsets(t *testing.T) {