summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-11-03 10:25:38 -0500
committerCorey Hulen <corey@hulen.com>2017-11-03 08:25:38 -0700
commitd5dbdb273703a3add0f1c3287aa531854ab30269 (patch)
tree6b1fb9079f9fae9d25bdb7ea459261383ee720d6
parent9d32cd42085bbb37460d815c6c1a00ad881c4895 (diff)
downloadchat-d5dbdb273703a3add0f1c3287aa531854ab30269.tar.gz
chat-d5dbdb273703a3add0f1c3287aa531854ab30269.tar.bz2
chat-d5dbdb273703a3add0f1c3287aa531854ab30269.zip
several one-line panic, race, and logic fixes (#7766)
-rw-r--r--api/license.go2
-rw-r--r--api/team.go8
-rw-r--r--api4/command.go4
-rw-r--r--api4/system.go2
-rw-r--r--api4/team.go8
-rw-r--r--app/auto_posts.go3
-rw-r--r--app/channel.go2
-rw-r--r--app/file.go2
-rw-r--r--app/saml.go2
-rw-r--r--app/user.go2
-rw-r--r--cmd/platform/jobserver.go2
-rw-r--r--cmd/platform/server.go2
-rw-r--r--cmd/platform/test.go2
-rw-r--r--i18n/en.json4
-rw-r--r--manualtesting/manual_testing.go14
-rw-r--r--model/gitlab/gitlab.go1
-rw-r--r--utils/file.go2
17 files changed, 37 insertions, 25 deletions
diff --git a/api/license.go b/api/license.go
index 06d4aa3a7..a6a167cac 100644
--- a/api/license.go
+++ b/api/license.go
@@ -45,11 +45,11 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
fileData := fileArray[0]
file, err := fileData.Open()
- defer file.Close()
if err != nil {
c.Err = model.NewAppError("addLicense", "api.license.add_license.open.app_error", nil, err.Error(), http.StatusInternalServerError)
return
}
+ defer file.Close()
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
diff --git a/api/team.go b/api/team.go
index 7f53786d9..089680624 100644
--- a/api/team.go
+++ b/api/team.go
@@ -386,10 +386,14 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
}
importFromArray, ok := r.MultipartForm.Value["importFrom"]
+ if !ok || len(importFromArray) < 1 {
+ c.Err = model.NewAppError("importTeam", "api.team.import_team.no_import_from.app_error", nil, "", http.StatusBadRequest)
+ return
+ }
importFrom := importFromArray[0]
fileSizeStr, ok := r.MultipartForm.Value["filesize"]
- if !ok {
+ if !ok || len(fileSizeStr) < 1 {
c.Err = model.NewAppError("importTeam", "api.team.import_team.unavailable.app_error", nil, "", http.StatusBadRequest)
return
}
@@ -414,11 +418,11 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
fileInfo := fileInfoArray[0]
fileData, err := fileInfo.Open()
- defer fileData.Close()
if err != nil {
c.Err = model.NewAppError("importTeam", "api.team.import_team.open.app_error", nil, err.Error(), http.StatusBadRequest)
return
}
+ defer fileData.Close()
var log *bytes.Buffer
switch importFrom {
diff --git a/api4/command.go b/api4/command.go
index 1a488b505..c92eb277a 100644
--- a/api4/command.go
+++ b/api4/command.go
@@ -156,8 +156,8 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- commands := []*model.Command{}
- err := &model.AppError{}
+ var commands []*model.Command
+ var err *model.AppError
if customOnly {
if !c.App.SessionHasPermissionToTeam(c.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS)
diff --git a/api4/system.go b/api4/system.go
index f3278a7b5..7bc846766 100644
--- a/api4/system.go
+++ b/api4/system.go
@@ -315,11 +315,11 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
fileData := fileArray[0]
file, err := fileData.Open()
- defer file.Close()
if err != nil {
c.Err = model.NewAppError("addLicense", "api.license.add_license.open.app_error", nil, err.Error(), http.StatusBadRequest)
return
}
+ defer file.Close()
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
diff --git a/api4/team.go b/api4/team.go
index 58dcaca0d..fe5d7a266 100644
--- a/api4/team.go
+++ b/api4/team.go
@@ -623,10 +623,14 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
}
importFromArray, ok := r.MultipartForm.Value["importFrom"]
+ if !ok || len(importFromArray) < 1 {
+ c.Err = model.NewAppError("importTeam", "api.team.import_team.no_import_from.app_error", nil, "", http.StatusBadRequest)
+ return
+ }
importFrom := importFromArray[0]
fileSizeStr, ok := r.MultipartForm.Value["filesize"]
- if !ok {
+ if !ok || len(fileSizeStr) < 1 {
c.Err = model.NewAppError("importTeam", "api.team.import_team.unavailable.app_error", nil, "", http.StatusBadRequest)
return
}
@@ -651,11 +655,11 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
fileInfo := fileInfoArray[0]
fileData, err := fileInfo.Open()
- defer fileData.Close()
if err != nil {
c.Err = model.NewAppError("importTeam", "api.team.import_team.open.app_error", nil, err.Error(), http.StatusBadRequest)
return
}
+ defer fileData.Close()
var log *bytes.Buffer
switch importFrom {
diff --git a/app/auto_posts.go b/app/auto_posts.go
index 254631c4e..6d1e352e5 100644
--- a/app/auto_posts.go
+++ b/app/auto_posts.go
@@ -44,6 +44,9 @@ func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) {
path, _ := utils.FindDir("web/static/images")
file, err := os.Open(path + "/" + filename)
+ if err != nil {
+ return nil, false
+ }
defer file.Close()
data := &bytes.Buffer{}
diff --git a/app/channel.go b/app/channel.go
index 4ccc12004..de60fbae3 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -1185,7 +1185,7 @@ func (a *App) ViewChannel(view *model.ChannelView, userId string, clearPushNotif
}
}
- times := map[string]int64{}
+ var times map[string]int64
if result := <-uchan; result.Err != nil {
return nil, result.Err
} else {
diff --git a/app/file.go b/app/file.go
index 11e503c40..3b221d9e2 100644
--- a/app/file.go
+++ b/app/file.go
@@ -259,10 +259,10 @@ func (a *App) UploadFiles(teamId string, channelId string, userId string, fileHe
for i, fileHeader := range fileHeaders {
file, fileErr := fileHeader.Open()
- defer file.Close()
if fileErr != nil {
return nil, model.NewAppError("UploadFiles", "api.file.upload_file.bad_parse.app_error", nil, fileErr.Error(), http.StatusBadRequest)
}
+ defer file.Close()
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
diff --git a/app/saml.go b/app/saml.go
index 3df00a9e1..bd9f647a1 100644
--- a/app/saml.go
+++ b/app/saml.go
@@ -36,10 +36,10 @@ func WriteSamlFile(fileData *multipart.FileHeader) *model.AppError {
}
file, err := fileData.Open()
- defer file.Close()
if err != nil {
return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.open.app_error", nil, err.Error(), http.StatusInternalServerError)
}
+ defer file.Close()
configDir, _ := utils.FindDir("config")
out, err := os.Create(configDir + filename)
diff --git a/app/user.go b/app/user.go
index 9f74ef303..999fabbf8 100644
--- a/app/user.go
+++ b/app/user.go
@@ -774,10 +774,10 @@ func (a *App) GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
func (a *App) SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError {
file, err := imageData.Open()
- defer file.Close()
if err != nil {
return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.open.app_error", nil, err.Error(), http.StatusBadRequest)
}
+ defer file.Close()
// Decode image config first to check dimensions before loading the whole thing into memory later on
config, _, err := image.DecodeConfig(file)
diff --git a/cmd/platform/jobserver.go b/cmd/platform/jobserver.go
index c38bfa4f0..e664136c0 100644
--- a/cmd/platform/jobserver.go
+++ b/cmd/platform/jobserver.go
@@ -46,7 +46,7 @@ func jobserverCmdF(cmd *cobra.Command, args []string) {
a.Jobs.StartSchedulers()
}
- var signalChan chan os.Signal = make(chan os.Signal)
+ signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-signalChan
diff --git a/cmd/platform/server.go b/cmd/platform/server.go
index 05e527462..6de14d63e 100644
--- a/cmd/platform/server.go
+++ b/cmd/platform/server.go
@@ -144,7 +144,7 @@ func runServer(configFileLocation string) {
// wait for kill signal before attempting to gracefully shutdown
// the running service
- c := make(chan os.Signal)
+ c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-c
diff --git a/cmd/platform/test.go b/cmd/platform/test.go
index faf265a0d..c815eebc3 100644
--- a/cmd/platform/test.go
+++ b/cmd/platform/test.go
@@ -77,7 +77,7 @@ func serverForWebClientTestsCmdF(cmd *cobra.Command, args []string) error {
wsapi.Init(a, a.Srv.WebSocketRouter)
a.UpdateConfig(setupClientTests)
- c := make(chan os.Signal)
+ c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-c
diff --git a/i18n/en.json b/i18n/en.json
index 82e8ebf40..a5ab636cd 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -2172,6 +2172,10 @@
"translation": "Could not parse multipart form"
},
{
+ "id": "api.team.import_team.no_import_from.app_error",
+ "translation": "Malformed request: importFrom field is not present."
+ },
+ {
"id": "api.team.import_team.unavailable.app_error",
"translation": "Malformed request: filesize field is not present."
},
diff --git a/manualtesting/manual_testing.go b/manualtesting/manual_testing.go
index 75274a24b..20b7a2dfd 100644
--- a/manualtesting/manual_testing.go
+++ b/manualtesting/manual_testing.go
@@ -138,18 +138,16 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
// Grab the test ID and pick the test
testname, ok := params["test"]
- var err2 *model.AppError
+ if !ok {
+ c.Err = model.NewAppError("/manual", "manaultesting.manual_test.parse.app_error", nil, "", http.StatusBadRequest)
+ return
+ }
+
switch testname[0] {
case "autolink":
- err2 = testAutoLink(env)
+ c.Err = testAutoLink(env)
// ADD YOUR NEW TEST HERE!
case "general":
- err2 = nil
- }
-
- if err != nil {
- c.Err = err2
- return
}
}
diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go
index 02955f13b..7e0cb10af 100644
--- a/model/gitlab/gitlab.go
+++ b/model/gitlab/gitlab.go
@@ -46,7 +46,6 @@ func userFromGitLabUser(glu *GitLabUser) *model.User {
} else {
user.FirstName = glu.Name
}
- strings.TrimSpace(user.Email)
user.Email = glu.Email
userId := strconv.FormatInt(glu.Id, 10)
user.AuthData = &userId
diff --git a/utils/file.go b/utils/file.go
index bc97252ae..c7e092a20 100644
--- a/utils/file.go
+++ b/utils/file.go
@@ -104,10 +104,10 @@ func ReadFile(path string) ([]byte, *model.AppError) {
}
bucket := Cfg.FileSettings.AmazonS3Bucket
minioObject, err := s3Clnt.GetObject(bucket, path)
- defer minioObject.Close()
if err != nil {
return nil, model.NewAppError("ReadFile", "api.file.read_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError)
}
+ defer minioObject.Close()
if f, err := ioutil.ReadAll(minioObject); err != nil {
return nil, model.NewAppError("ReadFile", "api.file.read_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError)
} else {