Skip to content

Commit b4c7940

Browse files
authored
fixed vulnerabilities (#392)
1 parent d771e97 commit b4c7940

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

models/token.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,14 @@ func UpdateAccessToken(t *AccessToken) error {
8888
}
8989

9090
// DeleteAccessTokenByID deletes access token by given ID.
91-
func DeleteAccessTokenByID(id int64) error {
92-
_, err := x.Id(id).Delete(new(AccessToken))
93-
return err
91+
func DeleteAccessTokenByID(id, userID int64) error {
92+
cnt, err := x.Id(id).Delete(&AccessToken{
93+
UID: userID,
94+
})
95+
if err != nil {
96+
return err
97+
} else if cnt != 1 {
98+
return ErrAccessTokenNotExist{}
99+
}
100+
return nil
94101
}

models/user_mail.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
package models
66

77
import (
8+
"errors"
89
"fmt"
910
"strings"
1011
)
1112

13+
var (
14+
// ErrEmailAddressNotExist email address not exist
15+
ErrEmailAddressNotExist = errors.New("Email address does not exist")
16+
)
17+
1218
// EmailAddress is the list of all email addresses of a user. Can contain the
1319
// primary email address, but is not obligatory.
1420
type EmailAddress struct {
@@ -139,14 +145,25 @@ func (email *EmailAddress) Activate() error {
139145

140146
// DeleteEmailAddress deletes an email address of given user.
141147
func DeleteEmailAddress(email *EmailAddress) (err error) {
148+
var deleted int64
149+
// ask to check UID
150+
var address = EmailAddress{
151+
UID: email.UID,
152+
}
142153
if email.ID > 0 {
143-
_, err = x.Id(email.ID).Delete(new(EmailAddress))
154+
deleted, err = x.Id(email.ID).Delete(&address)
144155
} else {
145-
_, err = x.
156+
deleted, err = x.
146157
Where("email=?", email.Email).
147-
Delete(new(EmailAddress))
158+
Delete(&address)
148159
}
149-
return err
160+
161+
if err != nil {
162+
return err
163+
} else if deleted != 1 {
164+
return ErrEmailAddressNotExist
165+
}
166+
return nil
150167
}
151168

152169
// DeleteEmailAddresses deletes multiple email addresses

routers/api/v1/user/email.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func DeleteEmail(ctx *context.APIContext, form api.CreateEmailOption) {
7373
for i := range form.Emails {
7474
emails[i] = &models.EmailAddress{
7575
Email: form.Emails[i],
76+
UID: ctx.User.ID,
7677
}
7778
}
7879

routers/user/setting.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) {
287287

288288
// DeleteEmail response for delete user's email
289289
func DeleteEmail(ctx *context.Context) {
290-
if err := models.DeleteEmailAddress(&models.EmailAddress{ID: ctx.QueryInt64("id")}); err != nil {
290+
if err := models.DeleteEmailAddress(&models.EmailAddress{ID: ctx.QueryInt64("id"), UID: ctx.User.ID}); err != nil {
291291
ctx.Handle(500, "DeleteEmail", err)
292292
return
293293
}
@@ -422,7 +422,7 @@ func SettingsApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm
422422

423423
// SettingsDeleteApplication response for delete user access token
424424
func SettingsDeleteApplication(ctx *context.Context) {
425-
if err := models.DeleteAccessTokenByID(ctx.QueryInt64("id")); err != nil {
425+
if err := models.DeleteAccessTokenByID(ctx.QueryInt64("id"), ctx.User.ID); err != nil {
426426
ctx.Flash.Error("DeleteAccessTokenByID: " + err.Error())
427427
} else {
428428
ctx.Flash.Success(ctx.Tr("settings.delete_token_success"))

0 commit comments

Comments
 (0)