From 035c3600bfa807540deef82d60e3a62c6998c956 Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Tue, 22 Sep 2026 00:59:19 +0800 Subject: [PATCH] fix: make text updates and uploads safer --- chfs-ng/internal/api/server.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/chfs-ng/internal/api/server.go b/chfs-ng/internal/api/server.go index f7701d8..794845d 100644 --- a/chfs-ng/internal/api/server.go +++ b/chfs-ng/internal/api/server.go @@ -509,13 +509,7 @@ func (s *Server) updatetext(w http.ResponseWriter, r *http.Request) { writeJSONError(w, http.StatusForbidden, "has no privilege") return } - f, e := s.Store.Create(p) - if e != nil { - http.Error(w, e.Error(), 500) - return - } - defer f.Close() - if _, e = io.WriteString(f, r.FormValue("text")); e != nil { + if e := copyFileToDestination(s.Store, strings.NewReader(r.FormValue("text")), p); e != nil { http.Error(w, e.Error(), 500) return } @@ -569,10 +563,13 @@ func (s *Server) upload(w http.ResponseWriter, r *http.Request) { for _, h := range hs { target := path.Join(dir, filepath.ToSlash(h.Filename)) if e := savePart(s.Store, target, h); e != nil { + for _, previous := range saved { + _ = s.Store.Remove(previous) + } http.Error(w, e.Error(), 500) return } - saved = append(saved, h.Filename) + saved = append(saved, target) } } for _, name := range saved { @@ -660,14 +657,19 @@ func (s *Server) upload2(w http.ResponseWriter, r *http.Request) { } } } + var saved []string for _, hs := range r.MultipartForm.File { for _, h := range hs { name := strings.TrimPrefix(filepath.ToSlash(h.Filename), "/") target := path.Join(dir, name) if err := savePart(s.Store, target, h); err != nil { + for _, previous := range saved { + _ = s.Store.Remove(previous) + } http.Error(w, err.Error(), 500) return } + saved = append(saved, target) } } writeCreated(w)