From 6472c85af5a0937b147c862fa1b1e085edb19ab4 Mon Sep 17 00:00:00 2001 From: MaineK00n Date: Thu, 30 Jul 2020 10:22:31 +0900 Subject: [PATCH] change make ChangelogDir once --- scan/debian.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/scan/debian.go b/scan/debian.go index 80690e75..f7d02657 100644 --- a/scan/debian.go +++ b/scan/debian.go @@ -501,6 +501,13 @@ func (o *debian) scanUnsecurePackages(updatable models.Packages) (models.VulnInf return nil, err } + if o.Distro.Family == config.Raspbian { + err := o.makeSaveChangelogDir() + if err != nil { + return nil, xerrors.Errorf("Failed to make directory to save changelog for Raspbian. err: %s", err) + } + } + // Collect CVE information of upgradable packages vulnInfos, err := o.scanChangelogs(updatable, meta) if err != nil { @@ -583,6 +590,17 @@ func (o *debian) getUpdatablePackNames() (packNames []string, err error) { cmd, r.ExitStatus, r.Stdout, r.Stderr) } +func (o *debian) makeSaveChangelogDir() (err error) { + cmd := fmt.Sprintf(`mkdir -p /tmp/vuls`) + cmd = util.PrependProxyEnv(cmd) + r := o.exec(cmd, noSudo) + if !r.isSuccess() { + o.log.Warnf("Failed to Create Directory: %s", r) + return r.Error + } + return +} + func (o *debian) parseAptGetUpgrade(stdout string) (updatableNames []string, err error) { startRe := regexp.MustCompile(`The following packages will be upgraded:`) stopRe := regexp.MustCompile(`^(\d+) upgraded.*`) @@ -808,20 +826,10 @@ func (o *debian) fetchParseChangelog(pack models.Package) ([]DetectedCveID, *mod } func (o *debian) getChangelogPath(pack models.Package) (string, error) { - cmd := "" - // TODO: Don't make it every time (only once at the beginning) - cmd = fmt.Sprintf(`mkdir -p /tmp/vuls`) + // `apt download` downloads deb package to current directory + cmd := fmt.Sprintf(`cd /tmp/vuls && apt download %s`, pack.Name) cmd = util.PrependProxyEnv(cmd) r := o.exec(cmd, noSudo) - if !r.isSuccess() { - o.log.Warnf("Failed to Create Directory: %s", r) - return "", r.Error - } - - // `apt download` downloads deb package to current directory - cmd = fmt.Sprintf(`cd /tmp/vuls && apt download %s`, pack.Name) - cmd = util.PrependProxyEnv(cmd) - r = o.exec(cmd, noSudo) if !r.isSuccess() { o.log.Warnf("Failed to Fetch deb package: %s", r) return "", r.Error