Fix LFS files being editable in web UI (#34356)

It's possible to edit "raw" lfs files in the web UI when accessing the path manually.

![image](https://github.com/user-attachments/assets/62610e9e-24db-45ec-ad04-28062073164c)
This commit is contained in:
bytedream 2025-05-04 20:23:28 +02:00 committed by GitHub
parent 3446f14ba0
commit 180aa00abf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,7 +20,6 @@ import (
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/typesniffer"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/utils" "code.gitea.io/gitea/routers/utils"
@ -151,9 +150,13 @@ func editFile(ctx *context.Context, isNewFile bool) {
return return
} }
dataRc, err := blob.DataAsync() buf, dataRc, fInfo, err := getFileReader(ctx, ctx.Repo.Repository.ID, blob)
if err != nil { if err != nil {
if git.IsErrNotExist(err) {
ctx.NotFound(err) ctx.NotFound(err)
} else {
ctx.ServerError("getFileReader", err)
}
return return
} }
@ -161,12 +164,8 @@ func editFile(ctx *context.Context, isNewFile bool) {
ctx.Data["FileSize"] = blob.Size() ctx.Data["FileSize"] = blob.Size()
buf := make([]byte, 1024)
n, _ := util.ReadAtMost(dataRc, buf)
buf = buf[:n]
// Only some file types are editable online as text. // Only some file types are editable online as text.
if !typesniffer.DetectContentType(buf).IsRepresentableAsText() { if !fInfo.isTextFile || fInfo.isLFSFile {
ctx.NotFound(nil) ctx.NotFound(nil)
return return
} }