Skip to content

Commit 7c46667

Browse files
authored
fixed vulnerabilities labels (#409)
1 parent 44428fd commit 7c46667

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

models/issue.go

+28-1
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,20 @@ func (issue *Issue) AfterSet(colName string, _ xorm.Cell) {
8787
}
8888
}
8989

90-
func (issue *Issue) loadAttributes(e Engine) (err error) {
90+
func (issue *Issue) loadRepo(e Engine) (err error) {
9191
if issue.Repo == nil {
9292
issue.Repo, err = getRepositoryByID(e, issue.RepoID)
9393
if err != nil {
9494
return fmt.Errorf("getRepositoryByID [%d]: %v", issue.RepoID, err)
9595
}
9696
}
97+
return nil
98+
}
99+
100+
func (issue *Issue) loadAttributes(e Engine) (err error) {
101+
if err := issue.loadRepo(e); err != nil {
102+
return err
103+
}
97104

98105
if issue.Poster == nil {
99106
issue.Poster, err = getUserByID(e, issue.PosterID)
@@ -322,6 +329,16 @@ func (issue *Issue) removeLabel(e *xorm.Session, label *Label) error {
322329

323330
// RemoveLabel removes a label from issue by given ID.
324331
func (issue *Issue) RemoveLabel(doer *User, label *Label) error {
332+
if err := issue.loadRepo(x); err != nil {
333+
return err
334+
}
335+
336+
if has, err := HasAccess(doer, issue.Repo, AccessModeWrite); err != nil {
337+
return err
338+
} else if !has {
339+
return ErrLabelNotExist{}
340+
}
341+
325342
if err := DeleteIssueLabel(issue, label); err != nil {
326343
return err
327344
}
@@ -353,6 +370,16 @@ func (issue *Issue) ClearLabels(doer *User) (err error) {
353370
return err
354371
}
355372

373+
if err := issue.loadRepo(sess); err != nil {
374+
return err
375+
}
376+
377+
if has, err := hasAccess(sess, doer, issue.Repo, AccessModeWrite); err != nil {
378+
return err
379+
} else if !has {
380+
return ErrLabelNotExist{}
381+
}
382+
356383
if err = issue.clearLabels(sess); err != nil {
357384
return err
358385
}

0 commit comments

Comments
 (0)