From 180aa00abf4a7647e46b8cd8ed35dc5be43166b9 Mon Sep 17 00:00:00 2001 From: bytedream Date: Sun, 4 May 2025 20:23:28 +0200 Subject: [PATCH] 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) --- routers/web/repo/editor.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/routers/web/repo/editor.go b/routers/web/repo/editor.go index c925b61151..514eb0ebfe 100644 --- a/routers/web/repo/editor.go +++ b/routers/web/repo/editor.go @@ -20,7 +20,6 @@ import ( "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" - "code.gitea.io/gitea/modules/typesniffer" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/routers/utils" @@ -151,9 +150,13 @@ func editFile(ctx *context.Context, isNewFile bool) { return } - dataRc, err := blob.DataAsync() + buf, dataRc, fInfo, err := getFileReader(ctx, ctx.Repo.Repository.ID, blob) if err != nil { - ctx.NotFound(err) + if git.IsErrNotExist(err) { + ctx.NotFound(err) + } else { + ctx.ServerError("getFileReader", err) + } return } @@ -161,12 +164,8 @@ func editFile(ctx *context.Context, isNewFile bool) { 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. - if !typesniffer.DetectContentType(buf).IsRepresentableAsText() { + if !fInfo.isTextFile || fInfo.isLFSFile { ctx.NotFound(nil) return }