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
This commit is contained in:
Justin Santa Barbara 2017-06-14 22:54:58 -04:00
parent ad43147e77
commit 737607ba6b
2 changed files with 20 additions and 3 deletions

View File

@ -2030,18 +2030,23 @@ 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
} }
} }
if !found {
return false return false
} }
}
return true return true
} }

View File

@ -877,6 +877,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) {