Skip to content

Commit 91bd7c5

Browse files
committed
Safely handle map deletions in refreshAccesses to avoid iteration issues
1 parent 5901bd7 commit 91bd7c5

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

models/perm/access/access.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,10 @@ func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap
105105
}
106106

107107
newAccesses := make([]Access, 0, len(accessMap))
108+
keysToDelete := []int64{}
108109
for userID, ua := range accessMap {
109110
if ua.Mode < minMode && !ua.User.IsRestricted {
111+
keysToDelete = append(keysToDelete, userID)
110112
continue
111113
}
112114

@@ -116,6 +118,9 @@ func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap
116118
Mode: ua.Mode,
117119
})
118120
}
121+
for _, uid := range keysToDelete {
122+
delete(accessMap, uid)
123+
}
119124

120125
// Delete old accesses and insert new ones for repository.
121126
if _, err = db.DeleteByBean(ctx, &Access{RepoID: repo.ID}); err != nil {

0 commit comments

Comments
 (0)