From 0a45ea44a4f80413709ca9dc7aa7833b60ba1d15 Mon Sep 17 00:00:00 2001 From: Matthew Penner Date: Fri, 25 Dec 2020 14:41:38 -0700 Subject: [PATCH] Return a user-friendly error for an invalid file mode --- router/router_server_files.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/router/router_server_files.go b/router/router_server_files.go index 8cd7a6d..95fa0b4 100644 --- a/router/router_server_files.go +++ b/router/router_server_files.go @@ -440,6 +440,8 @@ type chmodFile struct { Mode string `json:"mode"` } +var errInvalidFileMode = errors.New("invalid file mode") + func postServerChmodFile(c *gin.Context) { s := GetServer(c.Param("server")) @@ -471,7 +473,7 @@ func postServerChmodFile(c *gin.Context) { default: mode, err := strconv.ParseUint(p.Mode, 8, 32) if err != nil { - return err + return errInvalidFileMode } if err := s.Filesystem().Chmod(path.Join(data.Root, p.File), os.FileMode(mode)); err != nil { @@ -490,6 +492,13 @@ func postServerChmodFile(c *gin.Context) { } if err := g.Wait(); err != nil { + if errors.Is(err, errInvalidFileMode) { + c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{ + "error": "Invalid file mode.", + }) + return + } + NewServerError(err, s).AbortFilesystemError(c) return }