ソースを参照

Merge pull request #186 from vmarkovtsev/master

Fix combining zero-sized files
Vadim Markovtsev 6 年 前
コミット
c564b0fab6
1 ファイル変更14 行追加1 行削除
  1. 14 1
      cmd/hercules/combine.go

+ 14 - 1
cmd/hercules/combine.go

@@ -73,7 +73,16 @@ var combineCmd = &cobra.Command{
 
 func loadMessage(fileName string, repos *[]string) (
 	map[string]interface{}, *hercules.CommonAnalysisResult, []string) {
-	errs := []string{}
+	var errs []string
+	fi, err := os.Stat(fileName)
+	if err != nil {
+		errs = append(errs, "Cannot access "+fileName+": "+err.Error())
+		return nil, nil, errs
+	}
+	if fi.Size() == 0 {
+		errs = append(errs, "Cannot parse "+fileName+": file size is 0")
+		return nil, nil, errs
+	}
 	buffer, err := ioutil.ReadFile(fileName)
 	if err != nil {
 		errs = append(errs, "Cannot read "+fileName+": "+err.Error())
@@ -85,6 +94,10 @@ func loadMessage(fileName string, repos *[]string) (
 		errs = append(errs, "Cannot parse "+fileName+": "+err.Error())
 		return nil, nil, errs
 	}
+	if message.Header == nil {
+		errs = append(errs, "Cannot parse "+fileName+": corrupted header")
+		return nil, nil, errs
+	}
 	*repos = append(*repos, message.Header.Repository)
 	results := map[string]interface{}{}
 	for key, val := range message.Contents {