Compare commits

..

3 Commits

Author SHA1 Message Date
Adnan Hajdarevic a811db410b check before removing 2017-12-21 13:25:19 +01:00
Adnan Hajdarević 357c471667 Merge pull request #212 from adnanh/fix-file-panic
Fix nilpointer dereference when file cannot be created
2017-12-21 13:15:18 +01:00
Adnan Hajdarevic 85889fe378 Fix nilpointer dereference when file cannot be created 2017-12-21 13:14:07 +01:00
+6 -1
View File
@@ -23,7 +23,7 @@ import (
) )
const ( const (
version = "2.6.7" version = "2.6.8"
) )
var ( var (
@@ -368,13 +368,16 @@ func handleHook(h *hook.Hook, rid string, headers, query, payload *map[string]in
tmpfile, err := ioutil.TempFile(h.CommandWorkingDirectory, files[i].EnvName) tmpfile, err := ioutil.TempFile(h.CommandWorkingDirectory, files[i].EnvName)
if err != nil { if err != nil {
log.Printf("[%s] error creating temp file [%s]", rid, err) log.Printf("[%s] error creating temp file [%s]", rid, err)
continue
} }
log.Printf("[%s] writing env %s file %s", rid, files[i].EnvName, tmpfile.Name()) log.Printf("[%s] writing env %s file %s", rid, files[i].EnvName, tmpfile.Name())
if _, err := tmpfile.Write(files[i].Data); err != nil { if _, err := tmpfile.Write(files[i].Data); err != nil {
log.Printf("[%s] error writing file %s [%s]", rid, tmpfile.Name(), err) log.Printf("[%s] error writing file %s [%s]", rid, tmpfile.Name(), err)
continue
} }
if err := tmpfile.Close(); err != nil { if err := tmpfile.Close(); err != nil {
log.Printf("[%s] error closing file %s [%s]", rid, tmpfile.Name(), err) log.Printf("[%s] error closing file %s [%s]", rid, tmpfile.Name(), err)
continue
} }
files[i].File = tmpfile files[i].File = tmpfile
@@ -394,12 +397,14 @@ func handleHook(h *hook.Hook, rid string, headers, query, payload *map[string]in
} }
for i := range files { for i := range files {
if files[i].File != nil {
log.Printf("[%s] removing file %s\n", rid, files[i].File.Name()) log.Printf("[%s] removing file %s\n", rid, files[i].File.Name())
err := os.Remove(files[i].File.Name()) err := os.Remove(files[i].File.Name())
if err != nil { if err != nil {
log.Printf("[%s] error removing file %s [%s]", rid, files[i].File.Name(), err) log.Printf("[%s] error removing file %s [%s]", rid, files[i].File.Name(), err)
} }
} }
}
log.Printf("[%s] finished handling %s\n", rid, h.ID) log.Printf("[%s] finished handling %s\n", rid, h.ID)