Skip to content

Commit 55990eb

Browse files
authored
Check the token's owner and repository when registering a runner (#30406) (#30412)
Backport #30406 Fix #30378
1 parent 245e8d1 commit 55990eb

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

models/organization/org.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fmt"
1010
"strings"
1111

12+
actions_model "code.gitea.io/gitea/models/actions"
1213
"code.gitea.io/gitea/models/db"
1314
"code.gitea.io/gitea/models/perm"
1415
repo_model "code.gitea.io/gitea/models/repo"
@@ -401,6 +402,8 @@ func DeleteOrganization(ctx context.Context, org *Organization) error {
401402
&TeamUnit{OrgID: org.ID},
402403
&TeamInvite{OrgID: org.ID},
403404
&secret_model.Secret{OwnerID: org.ID},
405+
&actions_model.ActionRunner{OwnerID: org.ID},
406+
&actions_model.ActionRunnerToken{OwnerID: org.ID},
404407
); err != nil {
405408
return fmt.Errorf("DeleteBeans: %w", err)
406409
}

routers/api/actions/runner/runner.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"net/http"
1010

1111
actions_model "code.gitea.io/gitea/models/actions"
12+
repo_model "code.gitea.io/gitea/models/repo"
13+
user_model "code.gitea.io/gitea/models/user"
1214
"code.gitea.io/gitea/modules/actions"
1315
"code.gitea.io/gitea/modules/log"
1416
"code.gitea.io/gitea/modules/util"
@@ -54,6 +56,18 @@ func (s *Service) Register(
5456
return nil, errors.New("runner registration token has been invalidated, please use the latest one")
5557
}
5658

59+
if runnerToken.OwnerID > 0 {
60+
if _, err := user_model.GetUserByID(ctx, runnerToken.OwnerID); err != nil {
61+
return nil, errors.New("owner of the token not found")
62+
}
63+
}
64+
65+
if runnerToken.RepoID > 0 {
66+
if _, err := repo_model.GetRepositoryByID(ctx, runnerToken.RepoID); err != nil {
67+
return nil, errors.New("repository of the token not found")
68+
}
69+
}
70+
5771
labels := req.Msg.Labels
5872
// TODO: agent_labels should be removed from pb after Gitea 1.20 released.
5973
// Old version runner's agent_labels slice is not empty and labels slice is empty.

services/repository/delete.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, uid, r
164164
&actions_model.ActionScheduleSpec{RepoID: repoID},
165165
&actions_model.ActionSchedule{RepoID: repoID},
166166
&actions_model.ActionArtifact{RepoID: repoID},
167+
&actions_model.ActionRunnerToken{RepoID: repoID},
167168
); err != nil {
168169
return fmt.Errorf("deleteBeans: %w", err)
169170
}

services/user/delete.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ func deleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
9292
&pull_model.ReviewState{UserID: u.ID},
9393
&user_model.Redirect{RedirectUserID: u.ID},
9494
&actions_model.ActionRunner{OwnerID: u.ID},
95+
&actions_model.ActionRunnerToken{OwnerID: u.ID},
9596
); err != nil {
9697
return fmt.Errorf("deleteBeans: %w", err)
9798
}

0 commit comments

Comments
 (0)