Fix unpacking tar files

This commit is contained in:
Andrey Meshkov
2020-07-20 12:32:14 +03:00
parent 4175d82279
commit 793194db67
2 changed files with 52 additions and 33 deletions

View File

@@ -11,6 +11,7 @@ import (
"net/http"
"os"
"os/exec"
"path"
"path/filepath"
"runtime"
"strings"
@@ -244,6 +245,7 @@ func getUpdateInfo(jsonData []byte) (*updateInfo, error) {
if runtime.GOOS == "windows" {
binName = "AdGuardHome.exe"
}
u.curBinName = filepath.Join(workDir, binName)
if !util.FileExists(u.curBinName) {
return nil, fmt.Errorf("executable file %s doesn't exist", u.curBinName)
@@ -347,7 +349,6 @@ func zipFileUnpack(zipfile, outdir string) ([]string, error) {
// Existing files are overwritten
// Return the list of files (not directories) written
func targzFileUnpack(tarfile, outdir string) ([]string, error) {
f, err := os.Open(tarfile)
if err != nil {
return nil, fmt.Errorf("os.Open(): %s", err)
@@ -376,7 +377,13 @@ func targzFileUnpack(tarfile, outdir string) ([]string, error) {
continue
}
fn := filepath.Join(outdir, header.Name)
dir := path.Dir(header.Name)
if dir != "" {
// Create dir if necessary
_ = os.Mkdir(dir, os.FileMode(header.Mode&0777))
}
fn := filepath.Join(outdir, path.Base(header.Name))
if header.Typeflag == tar.TypeDir {
err = os.Mkdir(fn, os.FileMode(header.Mode&0777))
@@ -398,17 +405,17 @@ func targzFileUnpack(tarfile, outdir string) ([]string, error) {
}
_, err = io.Copy(f, tarReader)
if err != nil {
f.Close()
_ = f.Close()
err2 = fmt.Errorf("io.Copy(): %s", err)
break
}
f.Close()
_ = f.Close()
log.Tracef("created file %s", fn)
files = append(files, header.Name)
}
gzReader.Close()
_ = gzReader.Close()
return files, err2
}