Skip to content

Commit 44a7d7c

Browse files
Prevent NPE on avatar direct rendering if federated avatars disabled (go-gitea#15434)
go-gitea#13649 assumed that direct avatar urls would always be libravatar urls - this leads to NPEs if federated avatar service is disabled. Fix go-gitea#15421 Signed-off-by: Andrew Thornton <[email protected]> Co-authored-by: techknowlogick <[email protected]>
1 parent f3d0c76 commit 44a7d7c

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

routers/user/avatar.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ package user
77
import (
88
"errors"
99
"net/url"
10+
"path"
1011
"strconv"
1112
"strings"
1213

1314
"code.gitea.io/gitea/models"
1415
"code.gitea.io/gitea/modules/context"
1516
"code.gitea.io/gitea/modules/log"
17+
"code.gitea.io/gitea/modules/setting"
1618
)
1719

1820
// Avatar redirect browser to user avatar of requested size
@@ -70,8 +72,21 @@ func AvatarByEmailHash(ctx *context.Context) {
7072
}
7173

7274
var avatarURL *url.URL
73-
avatarURL, err = models.LibravatarURL(email)
74-
if err != nil {
75+
76+
if setting.EnableFederatedAvatar && setting.LibravatarService != nil {
77+
avatarURL, err = models.LibravatarURL(email)
78+
if err != nil {
79+
avatarURL, err = url.Parse(models.DefaultAvatarLink())
80+
if err != nil {
81+
ctx.ServerError("invalid default avatar url", err)
82+
return
83+
}
84+
}
85+
} else if !setting.DisableGravatar {
86+
copyOfGravatarSourceURL := *setting.GravatarSourceURL
87+
avatarURL = &copyOfGravatarSourceURL
88+
avatarURL.Path = path.Join(avatarURL.Path, hash)
89+
} else {
7590
avatarURL, err = url.Parse(models.DefaultAvatarLink())
7691
if err != nil {
7792
ctx.ServerError("invalid default avatar url", err)

0 commit comments

Comments
 (0)