Introduce image scanning for Arch Linux
Handle scanning of Arch Linux images.
This commit is contained in:
parent
a5b3e747a0
commit
ccb4ca4185
@ -42,6 +42,7 @@ import (
|
|||||||
_ "github.com/coreos/clair/database/pgsql"
|
_ "github.com/coreos/clair/database/pgsql"
|
||||||
|
|
||||||
// Register extensions.
|
// Register extensions.
|
||||||
|
_ "github.com/coreos/clair/ext/featurefmt/alpm"
|
||||||
_ "github.com/coreos/clair/ext/featurefmt/apk"
|
_ "github.com/coreos/clair/ext/featurefmt/apk"
|
||||||
_ "github.com/coreos/clair/ext/featurefmt/dpkg"
|
_ "github.com/coreos/clair/ext/featurefmt/dpkg"
|
||||||
_ "github.com/coreos/clair/ext/featurefmt/rpm"
|
_ "github.com/coreos/clair/ext/featurefmt/rpm"
|
||||||
@ -55,6 +56,7 @@ import (
|
|||||||
_ "github.com/coreos/clair/ext/notification/webhook"
|
_ "github.com/coreos/clair/ext/notification/webhook"
|
||||||
_ "github.com/coreos/clair/ext/vulnmdsrc/nvd"
|
_ "github.com/coreos/clair/ext/vulnmdsrc/nvd"
|
||||||
_ "github.com/coreos/clair/ext/vulnsrc/alpine"
|
_ "github.com/coreos/clair/ext/vulnsrc/alpine"
|
||||||
|
_ "github.com/coreos/clair/ext/vulnsrc/arch"
|
||||||
_ "github.com/coreos/clair/ext/vulnsrc/debian"
|
_ "github.com/coreos/clair/ext/vulnsrc/debian"
|
||||||
_ "github.com/coreos/clair/ext/vulnsrc/oracle"
|
_ "github.com/coreos/clair/ext/vulnsrc/oracle"
|
||||||
_ "github.com/coreos/clair/ext/vulnsrc/rhel"
|
_ "github.com/coreos/clair/ext/vulnsrc/rhel"
|
||||||
|
91
ext/featurefmt/alpm/alpm.go
Normal file
91
ext/featurefmt/alpm/alpm.go
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
// Copyright 2017-2018 clair authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// Package alpm implements a featurefmt.Lister for ALPM packages.
|
||||||
|
package alpm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"github.com/coreos/clair/database"
|
||||||
|
"github.com/coreos/clair/ext/featurefmt"
|
||||||
|
"github.com/coreos/clair/ext/versionfmt"
|
||||||
|
"github.com/coreos/clair/ext/versionfmt/rpm"
|
||||||
|
"github.com/coreos/clair/pkg/tarutil"
|
||||||
|
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
featurefmt.RegisterLister("alpm", rpm.ParserName, &lister{})
|
||||||
|
}
|
||||||
|
|
||||||
|
type lister struct{}
|
||||||
|
|
||||||
|
func (l lister) ListFeatures(files tarutil.FilesMap) ([]database.Feature, error) {
|
||||||
|
pkgSet := make(map[string]database.Feature)
|
||||||
|
alpm := database.Feature{}
|
||||||
|
for name, file := range files {
|
||||||
|
if !strings.HasSuffix(name, "desc") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
nameLabel := false
|
||||||
|
versionLabel := false
|
||||||
|
scanner := bufio.NewScanner(bytes.NewBuffer(file))
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case line == "%NAME%":
|
||||||
|
nameLabel = true
|
||||||
|
case nameLabel:
|
||||||
|
alpm.Name = line
|
||||||
|
nameLabel = false
|
||||||
|
case line == "%VERSION%":
|
||||||
|
versionLabel = true
|
||||||
|
case versionLabel:
|
||||||
|
err := versionfmt.Valid(rpm.ParserName, line)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).WithField("version", line).Warning("could not parse package version. skipping")
|
||||||
|
} else {
|
||||||
|
alpm.Version = line
|
||||||
|
}
|
||||||
|
versionLabel = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if alpm.Name != "" && alpm.Version != "" {
|
||||||
|
pkgSet[alpm.Name+"#"+alpm.Version] = alpm
|
||||||
|
alpm = database.Feature{}
|
||||||
|
// No need to continue reading the file at this point
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the map into a slice and attach the version format
|
||||||
|
pkgs := make([]database.Feature, 0, len(pkgSet))
|
||||||
|
for _, pkg := range pkgSet {
|
||||||
|
pkg.VersionFormat = rpm.ParserName
|
||||||
|
pkgs = append(pkgs, pkg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return pkgs, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l lister) RequiredFilenames() []string {
|
||||||
|
return []string{"var/lib/pacman/local/"}
|
||||||
|
}
|
64
ext/featurefmt/alpm/alpm_test.go
Normal file
64
ext/featurefmt/alpm/alpm_test.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
// Copyright 2017-2018 clair authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package alpm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/coreos/clair/database"
|
||||||
|
"github.com/coreos/clair/ext/featurefmt"
|
||||||
|
"github.com/coreos/clair/ext/versionfmt/rpm"
|
||||||
|
"io/ioutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestALPMFeatureDetection(t *testing.T) {
|
||||||
|
testFeatures := []database.Feature{
|
||||||
|
{Name: "bash", Version: "4.4.019-1"},
|
||||||
|
{Name: "curl", Version: "7.59.0-2"},
|
||||||
|
{Name: "file", Version: "5.32-1"},
|
||||||
|
{Name: "libseccomp", Version: "2.3.2-2"},
|
||||||
|
{Name: "zlib", Version: "1:1.2.11-2"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range testFeatures {
|
||||||
|
testFeatures[i].VersionFormat = rpm.ParserName
|
||||||
|
}
|
||||||
|
|
||||||
|
files := make(map[string][]byte)
|
||||||
|
err := filepath.Walk("testdata", func(path string, f os.FileInfo, err error) error {
|
||||||
|
if f.Mode().IsRegular() || f.Mode()&os.ModeSymlink != 0 {
|
||||||
|
content, err := ioutil.ReadFile(path)
|
||||||
|
if err == nil {
|
||||||
|
files[path] = content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Error("could not find any files")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
testData := []featurefmt.TestData{
|
||||||
|
{
|
||||||
|
Features: testFeatures,
|
||||||
|
Files: files,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
featurefmt.TestLister(t, &lister{}, testData)
|
||||||
|
}
|
1
ext/featurefmt/alpm/testdata/ALPM_DB_VERSION
vendored
Normal file
1
ext/featurefmt/alpm/testdata/ALPM_DB_VERSION
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
9
|
50
ext/featurefmt/alpm/testdata/bash-4.4.019-1/desc
vendored
Normal file
50
ext/featurefmt/alpm/testdata/bash-4.4.019-1/desc
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
%NAME%
|
||||||
|
bash
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
4.4.019-1
|
||||||
|
|
||||||
|
%DESC%
|
||||||
|
The GNU Bourne Again shell
|
||||||
|
|
||||||
|
%URL%
|
||||||
|
http://www.gnu.org/software/bash/bash.html
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
x86_64
|
||||||
|
|
||||||
|
%BUILDDATE%
|
||||||
|
1517987724
|
||||||
|
|
||||||
|
%INSTALLDATE%
|
||||||
|
1522476282
|
||||||
|
|
||||||
|
%PACKAGER%
|
||||||
|
Bartlomiej Piotrowski <bpiotrowski@archlinux.org>
|
||||||
|
|
||||||
|
%SIZE%
|
||||||
|
7522304
|
||||||
|
|
||||||
|
%REASON%
|
||||||
|
1
|
||||||
|
|
||||||
|
%GROUPS%
|
||||||
|
base
|
||||||
|
|
||||||
|
%LICENSE%
|
||||||
|
GPL
|
||||||
|
|
||||||
|
%VALIDATION%
|
||||||
|
pgp
|
||||||
|
|
||||||
|
%DEPENDS%
|
||||||
|
readline>=7.0
|
||||||
|
glibc
|
||||||
|
ncurses
|
||||||
|
|
||||||
|
%OPTDEPENDS%
|
||||||
|
bash-completion: for tab completion
|
||||||
|
|
||||||
|
%PROVIDES%
|
||||||
|
sh
|
||||||
|
|
244
ext/featurefmt/alpm/testdata/bash-4.4.019-1/files
vendored
Normal file
244
ext/featurefmt/alpm/testdata/bash-4.4.019-1/files
vendored
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
%FILES%
|
||||||
|
etc/
|
||||||
|
etc/bash.bash_logout
|
||||||
|
etc/bash.bashrc
|
||||||
|
etc/skel/
|
||||||
|
etc/skel/.bash_logout
|
||||||
|
etc/skel/.bash_profile
|
||||||
|
etc/skel/.bashrc
|
||||||
|
usr/
|
||||||
|
usr/bin/
|
||||||
|
usr/bin/bash
|
||||||
|
usr/bin/bashbug
|
||||||
|
usr/bin/sh
|
||||||
|
usr/include/
|
||||||
|
usr/include/bash/
|
||||||
|
usr/include/bash/alias.h
|
||||||
|
usr/include/bash/array.h
|
||||||
|
usr/include/bash/arrayfunc.h
|
||||||
|
usr/include/bash/assoc.h
|
||||||
|
usr/include/bash/bashansi.h
|
||||||
|
usr/include/bash/bashintl.h
|
||||||
|
usr/include/bash/bashjmp.h
|
||||||
|
usr/include/bash/bashtypes.h
|
||||||
|
usr/include/bash/builtins.h
|
||||||
|
usr/include/bash/builtins/
|
||||||
|
usr/include/bash/builtins/bashgetopt.h
|
||||||
|
usr/include/bash/builtins/builtext.h
|
||||||
|
usr/include/bash/builtins/common.h
|
||||||
|
usr/include/bash/builtins/getopt.h
|
||||||
|
usr/include/bash/command.h
|
||||||
|
usr/include/bash/config-bot.h
|
||||||
|
usr/include/bash/config-top.h
|
||||||
|
usr/include/bash/config.h
|
||||||
|
usr/include/bash/conftypes.h
|
||||||
|
usr/include/bash/dispose_cmd.h
|
||||||
|
usr/include/bash/error.h
|
||||||
|
usr/include/bash/externs.h
|
||||||
|
usr/include/bash/general.h
|
||||||
|
usr/include/bash/hashlib.h
|
||||||
|
usr/include/bash/include/
|
||||||
|
usr/include/bash/include/ansi_stdlib.h
|
||||||
|
usr/include/bash/include/chartypes.h
|
||||||
|
usr/include/bash/include/filecntl.h
|
||||||
|
usr/include/bash/include/gettext.h
|
||||||
|
usr/include/bash/include/maxpath.h
|
||||||
|
usr/include/bash/include/memalloc.h
|
||||||
|
usr/include/bash/include/ocache.h
|
||||||
|
usr/include/bash/include/posixdir.h
|
||||||
|
usr/include/bash/include/posixjmp.h
|
||||||
|
usr/include/bash/include/posixstat.h
|
||||||
|
usr/include/bash/include/posixtime.h
|
||||||
|
usr/include/bash/include/posixwait.h
|
||||||
|
usr/include/bash/include/shmbchar.h
|
||||||
|
usr/include/bash/include/shmbutil.h
|
||||||
|
usr/include/bash/include/shtty.h
|
||||||
|
usr/include/bash/include/stat-time.h
|
||||||
|
usr/include/bash/include/stdc.h
|
||||||
|
usr/include/bash/include/systimes.h
|
||||||
|
usr/include/bash/include/typemax.h
|
||||||
|
usr/include/bash/include/unionwait.h
|
||||||
|
usr/include/bash/jobs.h
|
||||||
|
usr/include/bash/make_cmd.h
|
||||||
|
usr/include/bash/pathnames.h
|
||||||
|
usr/include/bash/quit.h
|
||||||
|
usr/include/bash/shell.h
|
||||||
|
usr/include/bash/sig.h
|
||||||
|
usr/include/bash/siglist.h
|
||||||
|
usr/include/bash/signames.h
|
||||||
|
usr/include/bash/subst.h
|
||||||
|
usr/include/bash/syntax.h
|
||||||
|
usr/include/bash/unwind_prot.h
|
||||||
|
usr/include/bash/variables.h
|
||||||
|
usr/include/bash/version.h
|
||||||
|
usr/include/bash/xmalloc.h
|
||||||
|
usr/include/bash/y.tab.h
|
||||||
|
usr/lib/
|
||||||
|
usr/lib/bash/
|
||||||
|
usr/lib/bash/Makefile.inc
|
||||||
|
usr/lib/bash/basename
|
||||||
|
usr/lib/bash/dirname
|
||||||
|
usr/lib/bash/finfo
|
||||||
|
usr/lib/bash/head
|
||||||
|
usr/lib/bash/id
|
||||||
|
usr/lib/bash/ln
|
||||||
|
usr/lib/bash/logname
|
||||||
|
usr/lib/bash/mkdir
|
||||||
|
usr/lib/bash/mypid
|
||||||
|
usr/lib/bash/pathchk
|
||||||
|
usr/lib/bash/print
|
||||||
|
usr/lib/bash/printenv
|
||||||
|
usr/lib/bash/push
|
||||||
|
usr/lib/bash/realpath
|
||||||
|
usr/lib/bash/rmdir
|
||||||
|
usr/lib/bash/setpgid
|
||||||
|
usr/lib/bash/sleep
|
||||||
|
usr/lib/bash/strftime
|
||||||
|
usr/lib/bash/sync
|
||||||
|
usr/lib/bash/tee
|
||||||
|
usr/lib/bash/truefalse
|
||||||
|
usr/lib/bash/tty
|
||||||
|
usr/lib/bash/uname
|
||||||
|
usr/lib/bash/unlink
|
||||||
|
usr/lib/bash/whoami
|
||||||
|
usr/lib/pkgconfig/
|
||||||
|
usr/lib/pkgconfig/bash.pc
|
||||||
|
usr/share/
|
||||||
|
usr/share/doc/
|
||||||
|
usr/share/doc/bash/
|
||||||
|
usr/share/doc/bash/CHANGES
|
||||||
|
usr/share/doc/bash/COMPAT
|
||||||
|
usr/share/doc/bash/FAQ
|
||||||
|
usr/share/doc/bash/INTRO
|
||||||
|
usr/share/doc/bash/NEWS
|
||||||
|
usr/share/doc/bash/POSIX
|
||||||
|
usr/share/doc/bash/RBASH
|
||||||
|
usr/share/doc/bash/README
|
||||||
|
usr/share/doc/bash/bash.html
|
||||||
|
usr/share/doc/bash/bashref.html
|
||||||
|
usr/share/info/
|
||||||
|
usr/share/info/bash.info.gz
|
||||||
|
usr/share/locale/
|
||||||
|
usr/share/locale/af/
|
||||||
|
usr/share/locale/af/LC_MESSAGES/
|
||||||
|
usr/share/locale/af/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/bg/
|
||||||
|
usr/share/locale/bg/LC_MESSAGES/
|
||||||
|
usr/share/locale/bg/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/ca/
|
||||||
|
usr/share/locale/ca/LC_MESSAGES/
|
||||||
|
usr/share/locale/ca/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/cs/
|
||||||
|
usr/share/locale/cs/LC_MESSAGES/
|
||||||
|
usr/share/locale/cs/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/da/
|
||||||
|
usr/share/locale/da/LC_MESSAGES/
|
||||||
|
usr/share/locale/da/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/de/
|
||||||
|
usr/share/locale/de/LC_MESSAGES/
|
||||||
|
usr/share/locale/de/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/el/
|
||||||
|
usr/share/locale/el/LC_MESSAGES/
|
||||||
|
usr/share/locale/el/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/en@boldquot/
|
||||||
|
usr/share/locale/en@boldquot/LC_MESSAGES/
|
||||||
|
usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/en@quot/
|
||||||
|
usr/share/locale/en@quot/LC_MESSAGES/
|
||||||
|
usr/share/locale/en@quot/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/eo/
|
||||||
|
usr/share/locale/eo/LC_MESSAGES/
|
||||||
|
usr/share/locale/eo/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/es/
|
||||||
|
usr/share/locale/es/LC_MESSAGES/
|
||||||
|
usr/share/locale/es/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/et/
|
||||||
|
usr/share/locale/et/LC_MESSAGES/
|
||||||
|
usr/share/locale/et/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/fi/
|
||||||
|
usr/share/locale/fi/LC_MESSAGES/
|
||||||
|
usr/share/locale/fi/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/fr/
|
||||||
|
usr/share/locale/fr/LC_MESSAGES/
|
||||||
|
usr/share/locale/fr/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/ga/
|
||||||
|
usr/share/locale/ga/LC_MESSAGES/
|
||||||
|
usr/share/locale/ga/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/gl/
|
||||||
|
usr/share/locale/gl/LC_MESSAGES/
|
||||||
|
usr/share/locale/gl/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/hr/
|
||||||
|
usr/share/locale/hr/LC_MESSAGES/
|
||||||
|
usr/share/locale/hr/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/hu/
|
||||||
|
usr/share/locale/hu/LC_MESSAGES/
|
||||||
|
usr/share/locale/hu/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/id/
|
||||||
|
usr/share/locale/id/LC_MESSAGES/
|
||||||
|
usr/share/locale/id/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/it/
|
||||||
|
usr/share/locale/it/LC_MESSAGES/
|
||||||
|
usr/share/locale/it/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/ja/
|
||||||
|
usr/share/locale/ja/LC_MESSAGES/
|
||||||
|
usr/share/locale/ja/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/lt/
|
||||||
|
usr/share/locale/lt/LC_MESSAGES/
|
||||||
|
usr/share/locale/lt/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/nb/
|
||||||
|
usr/share/locale/nb/LC_MESSAGES/
|
||||||
|
usr/share/locale/nb/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/nl/
|
||||||
|
usr/share/locale/nl/LC_MESSAGES/
|
||||||
|
usr/share/locale/nl/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/pl/
|
||||||
|
usr/share/locale/pl/LC_MESSAGES/
|
||||||
|
usr/share/locale/pl/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/pt_BR/
|
||||||
|
usr/share/locale/pt_BR/LC_MESSAGES/
|
||||||
|
usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/ro/
|
||||||
|
usr/share/locale/ro/LC_MESSAGES/
|
||||||
|
usr/share/locale/ro/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/ru/
|
||||||
|
usr/share/locale/ru/LC_MESSAGES/
|
||||||
|
usr/share/locale/ru/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/sk/
|
||||||
|
usr/share/locale/sk/LC_MESSAGES/
|
||||||
|
usr/share/locale/sk/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/sl/
|
||||||
|
usr/share/locale/sl/LC_MESSAGES/
|
||||||
|
usr/share/locale/sl/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/sr/
|
||||||
|
usr/share/locale/sr/LC_MESSAGES/
|
||||||
|
usr/share/locale/sr/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/sv/
|
||||||
|
usr/share/locale/sv/LC_MESSAGES/
|
||||||
|
usr/share/locale/sv/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/tr/
|
||||||
|
usr/share/locale/tr/LC_MESSAGES/
|
||||||
|
usr/share/locale/tr/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/uk/
|
||||||
|
usr/share/locale/uk/LC_MESSAGES/
|
||||||
|
usr/share/locale/uk/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/vi/
|
||||||
|
usr/share/locale/vi/LC_MESSAGES/
|
||||||
|
usr/share/locale/vi/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/zh_CN/
|
||||||
|
usr/share/locale/zh_CN/LC_MESSAGES/
|
||||||
|
usr/share/locale/zh_CN/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/locale/zh_TW/
|
||||||
|
usr/share/locale/zh_TW/LC_MESSAGES/
|
||||||
|
usr/share/locale/zh_TW/LC_MESSAGES/bash.mo
|
||||||
|
usr/share/man/
|
||||||
|
usr/share/man/man1/
|
||||||
|
usr/share/man/man1/bash.1.gz
|
||||||
|
usr/share/man/man1/bashbug.1.gz
|
||||||
|
|
||||||
|
%BACKUP%
|
||||||
|
etc/bash.bashrc d8f3f334e72c0e30032eae1a1229aef1
|
||||||
|
etc/bash.bash_logout 472f536d7c9e8250dc4568ec4cfaf294
|
||||||
|
etc/skel/.bashrc 027d6bd8f5f6a06b75bb7698cb478089
|
||||||
|
etc/skel/.bash_profile 2902e0fee7a9168f3a4fd2ccd60ff047
|
||||||
|
etc/skel/.bash_logout 42f4400ed2314bd7519c020d0187edc5
|
||||||
|
|
BIN
ext/featurefmt/alpm/testdata/bash-4.4.019-1/mtree
vendored
Normal file
BIN
ext/featurefmt/alpm/testdata/bash-4.4.019-1/mtree
vendored
Normal file
Binary file not shown.
48
ext/featurefmt/alpm/testdata/curl-7.59.0-2/desc
vendored
Normal file
48
ext/featurefmt/alpm/testdata/curl-7.59.0-2/desc
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
%NAME%
|
||||||
|
curl
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
7.59.0-2
|
||||||
|
|
||||||
|
%DESC%
|
||||||
|
An URL retrieval utility and library
|
||||||
|
|
||||||
|
%URL%
|
||||||
|
https://curl.haxx.se
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
x86_64
|
||||||
|
|
||||||
|
%BUILDDATE%
|
||||||
|
1521028875
|
||||||
|
|
||||||
|
%INSTALLDATE%
|
||||||
|
1522476287
|
||||||
|
|
||||||
|
%PACKAGER%
|
||||||
|
Levente Polyak <anthraxx@archlinux.org>
|
||||||
|
|
||||||
|
%SIZE%
|
||||||
|
1600512
|
||||||
|
|
||||||
|
%REASON%
|
||||||
|
1
|
||||||
|
|
||||||
|
%LICENSE%
|
||||||
|
MIT
|
||||||
|
|
||||||
|
%VALIDATION%
|
||||||
|
pgp
|
||||||
|
|
||||||
|
%DEPENDS%
|
||||||
|
ca-certificates
|
||||||
|
krb5
|
||||||
|
libssh2
|
||||||
|
openssl
|
||||||
|
zlib
|
||||||
|
libpsl
|
||||||
|
libnghttp2
|
||||||
|
|
||||||
|
%PROVIDES%
|
||||||
|
libcurl.so=4-64
|
||||||
|
|
434
ext/featurefmt/alpm/testdata/curl-7.59.0-2/files
vendored
Normal file
434
ext/featurefmt/alpm/testdata/curl-7.59.0-2/files
vendored
Normal file
@ -0,0 +1,434 @@
|
|||||||
|
%FILES%
|
||||||
|
usr/
|
||||||
|
usr/bin/
|
||||||
|
usr/bin/curl
|
||||||
|
usr/bin/curl-config
|
||||||
|
usr/include/
|
||||||
|
usr/include/curl/
|
||||||
|
usr/include/curl/curl.h
|
||||||
|
usr/include/curl/curlver.h
|
||||||
|
usr/include/curl/easy.h
|
||||||
|
usr/include/curl/mprintf.h
|
||||||
|
usr/include/curl/multi.h
|
||||||
|
usr/include/curl/stdcheaders.h
|
||||||
|
usr/include/curl/system.h
|
||||||
|
usr/include/curl/typecheck-gcc.h
|
||||||
|
usr/lib/
|
||||||
|
usr/lib/libcurl.so
|
||||||
|
usr/lib/libcurl.so.4
|
||||||
|
usr/lib/libcurl.so.4.5.0
|
||||||
|
usr/lib/pkgconfig/
|
||||||
|
usr/lib/pkgconfig/libcurl.pc
|
||||||
|
usr/share/
|
||||||
|
usr/share/aclocal/
|
||||||
|
usr/share/aclocal/libcurl.m4
|
||||||
|
usr/share/licenses/
|
||||||
|
usr/share/licenses/curl/
|
||||||
|
usr/share/licenses/curl/COPYING
|
||||||
|
usr/share/man/
|
||||||
|
usr/share/man/man1/
|
||||||
|
usr/share/man/man1/curl-config.1.gz
|
||||||
|
usr/share/man/man1/curl.1.gz
|
||||||
|
usr/share/man/man3/
|
||||||
|
usr/share/man/man3/CURLINFO_ACTIVESOCKET.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_APPCONNECT_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CERTINFO.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONDITION_UNMET.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONNECT_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONTENT_LENGTH_UPLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_CONTENT_TYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_COOKIELIST.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_EFFECTIVE_URL.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_FILETIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_FILETIME_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_FTP_ENTRY_PATH.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_HEADER_SIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_HTTPAUTH_AVAIL.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_HTTP_CONNECTCODE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_HTTP_VERSION.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_LASTSOCKET.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_LOCAL_IP.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_LOCAL_PORT.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_NAMELOOKUP_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_NUM_CONNECTS.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_OS_ERRNO.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PRETRANSFER_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PRIMARY_IP.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PRIMARY_PORT.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PRIVATE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PROTOCOL.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PROXYAUTH_AVAIL.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_PROXY_SSL_VERIFYRESULT.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_REDIRECT_COUNT.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_REDIRECT_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_REDIRECT_URL.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_REQUEST_SIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_RESPONSE_CODE.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_RTSP_CLIENT_CSEQ.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_RTSP_CSEQ_RECV.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_RTSP_SERVER_CSEQ.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_RTSP_SESSION_ID.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SCHEME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SIZE_DOWNLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SIZE_DOWNLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SIZE_UPLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SIZE_UPLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SPEED_DOWNLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SPEED_DOWNLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SPEED_UPLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SPEED_UPLOAD_T.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SSL_ENGINES.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_SSL_VERIFYRESULT.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_STARTTRANSFER_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_TLS_SESSION.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_TLS_SSL_PTR.3.gz
|
||||||
|
usr/share/man/man3/CURLINFO_TOTAL_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_MAXCONNECTS.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_MAX_HOST_CONNECTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_MAX_PIPELINE_LENGTH.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_PIPELINING.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_PIPELINING_SERVER_BL.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_PIPELINING_SITE_BL.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_PUSHDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_PUSHFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_SOCKETDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_SOCKETFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_TIMERDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLMOPT_TIMERFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ABSTRACT_UNIX_SOCKET.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ACCEPTTIMEOUT_MS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ACCEPT_ENCODING.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ADDRESS_SCOPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_APPEND.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_AUTOREFERER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_BUFFERSIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CAINFO.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CAPATH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CERTINFO.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CHUNK_BGN_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CHUNK_DATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CHUNK_END_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CLOSESOCKETDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CLOSESOCKETFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONNECTTIMEOUT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONNECTTIMEOUT_MS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONNECT_ONLY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONNECT_TO.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONV_FROM_UTF8_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CONV_TO_NETWORK_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COOKIE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COOKIEFILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COOKIEJAR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COOKIELIST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COOKIESESSION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_COPYPOSTFIELDS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CRLF.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CRLFILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_CUSTOMREQUEST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DEBUGDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DEBUGFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DEFAULT_PROTOCOL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DIRLISTONLY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_CACHE_TIMEOUT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_INTERFACE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_LOCAL_IP4.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_LOCAL_IP6.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_SERVERS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_DNS_USE_GLOBAL_CACHE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_EGDSOCKET.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ERRORBUFFER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_EXPECT_100_TIMEOUT_MS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FAILONERROR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FILETIME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FNMATCH_DATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FNMATCH_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FOLLOWLOCATION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FORBID_REUSE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FRESH_CONNECT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTPPORT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTPSSLAUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_ACCOUNT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_CREATE_MISSING_DIRS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_FILEMETHOD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_RESPONSE_TIMEOUT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_SKIP_PASV_IP.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_SSL_CCC.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_USE_EPRT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_USE_EPSV.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_FTP_USE_PRET.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_GSSAPI_DELEGATION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HEADER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HEADERDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HEADERFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HEADEROPT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTP200ALIASES.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTPAUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTPGET.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTPHEADER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTPPOST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTPPROXYTUNNEL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTP_CONTENT_DECODING.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTP_TRANSFER_DECODING.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_HTTP_VERSION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_IGNORE_CONTENT_LENGTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_INFILESIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_INFILESIZE_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_INTERFACE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_INTERLEAVEDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_INTERLEAVEFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_IOCTLDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_IOCTLFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_IPRESOLVE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_ISSUERCERT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_KEEP_SENDING_ON_ERROR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_KEYPASSWD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_KRBLEVEL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_LOCALPORT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_LOCALPORTRANGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_LOGIN_OPTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_LOW_SPEED_LIMIT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_LOW_SPEED_TIME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAIL_AUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAIL_FROM.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAIL_RCPT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAXCONNECTS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAXFILESIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAXFILESIZE_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAXREDIRS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAX_RECV_SPEED_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MAX_SEND_SPEED_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_MIMEPOST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NETRC.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NETRC_FILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NEW_DIRECTORY_PERMS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NEW_FILE_PERMS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NOBODY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NOPROGRESS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NOPROXY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_NOSIGNAL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_OPENSOCKETDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_OPENSOCKETFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PASSWORD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PATH_AS_IS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PINNEDPUBLICKEY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PIPEWAIT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PORT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POSTFIELDS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POSTFIELDSIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POSTFIELDSIZE_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POSTQUOTE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_POSTREDIR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PREQUOTE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PRE_PROXY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PRIVATE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROGRESSDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROGRESSFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROTOCOLS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYAUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYHEADER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYPASSWORD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYPORT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYTYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYUSERNAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXYUSERPWD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_CAINFO.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_CAPATH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_CRLFILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_KEYPASSWD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_PINNEDPUBLICKEY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SERVICE_NAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSLCERT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSLCERTTYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSLKEY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSLKEYTYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSLVERSION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSL_CIPHER_LIST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSL_OPTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSL_VERIFYHOST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_SSL_VERIFYPEER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_TLSAUTH_TYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_TLSAUTH_USERNAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PROXY_TRANSFER_MODE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_PUT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_QUOTE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RANDOM_FILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RANGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_READDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_READFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_REDIR_PROTOCOLS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_REFERER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_REQUEST_TARGET.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RESOLVE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RESOLVER_START_DATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RESOLVER_START_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RESUME_FROM.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RESUME_FROM_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_CLIENT_CSEQ.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_REQUEST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_SERVER_CSEQ.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_SESSION_ID.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_STREAM_URI.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_RTSP_TRANSPORT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SASL_IR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SEEKDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SEEKFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SERVICE_NAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SHARE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SOCKOPTDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SOCKOPTFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SOCKS5_AUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SOCKS5_GSSAPI_NEC.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_AUTH_TYPES.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_COMPRESSION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_KEYDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_KEYFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_KNOWNHOSTS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_PRIVATE_KEYFILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSH_PUBLIC_KEYFILE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLCERT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLCERTTYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLENGINE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLENGINE_DEFAULT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLKEY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLKEYTYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSLVERSION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_CIPHER_LIST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_CTX_DATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_CTX_FUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_ENABLE_ALPN.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_ENABLE_NPN.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_FALSESTART.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_OPTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_SESSIONID_CACHE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_VERIFYHOST.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_VERIFYPEER.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SSL_VERIFYSTATUS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_STDERR.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_STREAM_DEPENDS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_STREAM_DEPENDS_E.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_STREAM_WEIGHT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TCP_FASTOPEN.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TCP_KEEPALIVE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TCP_KEEPIDLE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TCP_KEEPINTVL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TCP_NODELAY.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TELNETOPTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TFTP_BLKSIZE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TFTP_NO_OPTIONS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TIMECONDITION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TIMEOUT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TIMEOUT_MS.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TIMEVALUE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TIMEVALUE_LARGE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TLSAUTH_PASSWORD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TLSAUTH_TYPE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TLSAUTH_USERNAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TRANSFERTEXT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_TRANSFER_ENCODING.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_UNIX_SOCKET_PATH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_UNRESTRICTED_AUTH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_UPLOAD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_URL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_USERAGENT.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_USERNAME.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_USERPWD.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_USE_SSL.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_VERBOSE.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_WILDCARDMATCH.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_WRITEDATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_WRITEFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_XFERINFODATA.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_XFERINFOFUNCTION.3.gz
|
||||||
|
usr/share/man/man3/CURLOPT_XOAUTH2_BEARER.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_cleanup.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_duphandle.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_escape.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_getinfo.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_init.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_pause.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_perform.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_recv.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_reset.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_send.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_setopt.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_strerror.3.gz
|
||||||
|
usr/share/man/man3/curl_easy_unescape.3.gz
|
||||||
|
usr/share/man/man3/curl_escape.3.gz
|
||||||
|
usr/share/man/man3/curl_formadd.3.gz
|
||||||
|
usr/share/man/man3/curl_formfree.3.gz
|
||||||
|
usr/share/man/man3/curl_formget.3.gz
|
||||||
|
usr/share/man/man3/curl_free.3.gz
|
||||||
|
usr/share/man/man3/curl_getdate.3.gz
|
||||||
|
usr/share/man/man3/curl_getenv.3.gz
|
||||||
|
usr/share/man/man3/curl_global_cleanup.3.gz
|
||||||
|
usr/share/man/man3/curl_global_init.3.gz
|
||||||
|
usr/share/man/man3/curl_global_init_mem.3.gz
|
||||||
|
usr/share/man/man3/curl_global_sslset.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_addpart.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_data.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_data_cb.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_encoder.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_filedata.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_filename.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_free.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_headers.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_init.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_name.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_subparts.3.gz
|
||||||
|
usr/share/man/man3/curl_mime_type.3.gz
|
||||||
|
usr/share/man/man3/curl_mprintf.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_add_handle.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_assign.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_cleanup.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_fdset.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_info_read.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_init.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_perform.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_remove_handle.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_setopt.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_socket.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_socket_action.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_socket_all.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_strerror.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_timeout.3.gz
|
||||||
|
usr/share/man/man3/curl_multi_wait.3.gz
|
||||||
|
usr/share/man/man3/curl_share_cleanup.3.gz
|
||||||
|
usr/share/man/man3/curl_share_init.3.gz
|
||||||
|
usr/share/man/man3/curl_share_setopt.3.gz
|
||||||
|
usr/share/man/man3/curl_share_strerror.3.gz
|
||||||
|
usr/share/man/man3/curl_slist_append.3.gz
|
||||||
|
usr/share/man/man3/curl_slist_free_all.3.gz
|
||||||
|
usr/share/man/man3/curl_strequal.3.gz
|
||||||
|
usr/share/man/man3/curl_strnequal.3.gz
|
||||||
|
usr/share/man/man3/curl_unescape.3.gz
|
||||||
|
usr/share/man/man3/curl_version.3.gz
|
||||||
|
usr/share/man/man3/curl_version_info.3.gz
|
||||||
|
usr/share/man/man3/libcurl-easy.3.gz
|
||||||
|
usr/share/man/man3/libcurl-env.3.gz
|
||||||
|
usr/share/man/man3/libcurl-errors.3.gz
|
||||||
|
usr/share/man/man3/libcurl-multi.3.gz
|
||||||
|
usr/share/man/man3/libcurl-security.3.gz
|
||||||
|
usr/share/man/man3/libcurl-share.3.gz
|
||||||
|
usr/share/man/man3/libcurl-symbols.3.gz
|
||||||
|
usr/share/man/man3/libcurl-thread.3.gz
|
||||||
|
usr/share/man/man3/libcurl-tutorial.3.gz
|
||||||
|
usr/share/man/man3/libcurl.3.gz
|
||||||
|
usr/share/zsh/
|
||||||
|
usr/share/zsh/site-functions/
|
||||||
|
usr/share/zsh/site-functions/_curl
|
||||||
|
|
BIN
ext/featurefmt/alpm/testdata/curl-7.59.0-2/mtree
vendored
Normal file
BIN
ext/featurefmt/alpm/testdata/curl-7.59.0-2/mtree
vendored
Normal file
Binary file not shown.
41
ext/featurefmt/alpm/testdata/file-5.32-1/desc
vendored
Normal file
41
ext/featurefmt/alpm/testdata/file-5.32-1/desc
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
%NAME%
|
||||||
|
file
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
5.32-1
|
||||||
|
|
||||||
|
%DESC%
|
||||||
|
File type identification utility
|
||||||
|
|
||||||
|
%URL%
|
||||||
|
https://www.darwinsys.com/file/
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
x86_64
|
||||||
|
|
||||||
|
%BUILDDATE%
|
||||||
|
1504455797
|
||||||
|
|
||||||
|
%INSTALLDATE%
|
||||||
|
1517849175
|
||||||
|
|
||||||
|
%PACKAGER%
|
||||||
|
Sébastien Luttringer <seblu@seblu.net>
|
||||||
|
|
||||||
|
%SIZE%
|
||||||
|
5151744
|
||||||
|
|
||||||
|
%GROUPS%
|
||||||
|
base
|
||||||
|
base-devel
|
||||||
|
|
||||||
|
%LICENSE%
|
||||||
|
custom
|
||||||
|
|
||||||
|
%VALIDATION%
|
||||||
|
pgp
|
||||||
|
|
||||||
|
%DEPENDS%
|
||||||
|
glibc
|
||||||
|
zlib
|
||||||
|
|
26
ext/featurefmt/alpm/testdata/file-5.32-1/files
vendored
Normal file
26
ext/featurefmt/alpm/testdata/file-5.32-1/files
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
%FILES%
|
||||||
|
usr/
|
||||||
|
usr/bin/
|
||||||
|
usr/bin/file
|
||||||
|
usr/include/
|
||||||
|
usr/include/magic.h
|
||||||
|
usr/lib/
|
||||||
|
usr/lib/libmagic.so
|
||||||
|
usr/lib/libmagic.so.1
|
||||||
|
usr/lib/libmagic.so.1.0.0
|
||||||
|
usr/share/
|
||||||
|
usr/share/file/
|
||||||
|
usr/share/file/misc/
|
||||||
|
usr/share/file/misc/magic.mgc
|
||||||
|
usr/share/licenses/
|
||||||
|
usr/share/licenses/file/
|
||||||
|
usr/share/licenses/file/COPYING
|
||||||
|
usr/share/man/
|
||||||
|
usr/share/man/man1/
|
||||||
|
usr/share/man/man1/file.1.gz
|
||||||
|
usr/share/man/man3/
|
||||||
|
usr/share/man/man3/libmagic.3.gz
|
||||||
|
usr/share/man/man4/
|
||||||
|
usr/share/man/man5/
|
||||||
|
usr/share/man/man5/magic.5.gz
|
||||||
|
|
BIN
ext/featurefmt/alpm/testdata/file-5.32-1/mtree
vendored
Normal file
BIN
ext/featurefmt/alpm/testdata/file-5.32-1/mtree
vendored
Normal file
Binary file not shown.
39
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/desc
vendored
Normal file
39
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/desc
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
%NAME%
|
||||||
|
libseccomp
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
2.3.2-2
|
||||||
|
|
||||||
|
%DESC%
|
||||||
|
Enhanced seccomp library
|
||||||
|
|
||||||
|
%URL%
|
||||||
|
https://github.com/seccomp/libseccomp
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
x86_64
|
||||||
|
|
||||||
|
%BUILDDATE%
|
||||||
|
1515617166
|
||||||
|
|
||||||
|
%INSTALLDATE%
|
||||||
|
1522476286
|
||||||
|
|
||||||
|
%PACKAGER%
|
||||||
|
Christian Hesse <arch@eworm.de>
|
||||||
|
|
||||||
|
%SIZE%
|
||||||
|
589824
|
||||||
|
|
||||||
|
%REASON%
|
||||||
|
1
|
||||||
|
|
||||||
|
%LICENSE%
|
||||||
|
LGPL2.1
|
||||||
|
|
||||||
|
%VALIDATION%
|
||||||
|
pgp
|
||||||
|
|
||||||
|
%DEPENDS%
|
||||||
|
glibc
|
||||||
|
|
42
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/files
vendored
Normal file
42
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/files
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
%FILES%
|
||||||
|
usr/
|
||||||
|
usr/bin/
|
||||||
|
usr/bin/scmp_sys_resolver
|
||||||
|
usr/include/
|
||||||
|
usr/include/seccomp.h
|
||||||
|
usr/lib/
|
||||||
|
usr/lib/libseccomp.so
|
||||||
|
usr/lib/libseccomp.so.2
|
||||||
|
usr/lib/libseccomp.so.2.3.2
|
||||||
|
usr/lib/pkgconfig/
|
||||||
|
usr/lib/pkgconfig/libseccomp.pc
|
||||||
|
usr/share/
|
||||||
|
usr/share/man/
|
||||||
|
usr/share/man/man1/
|
||||||
|
usr/share/man/man1/scmp_sys_resolver.1.gz
|
||||||
|
usr/share/man/man3/
|
||||||
|
usr/share/man/man3/seccomp_arch_add.3.gz
|
||||||
|
usr/share/man/man3/seccomp_arch_exist.3.gz
|
||||||
|
usr/share/man/man3/seccomp_arch_native.3.gz
|
||||||
|
usr/share/man/man3/seccomp_arch_remove.3.gz
|
||||||
|
usr/share/man/man3/seccomp_arch_resolve_name.3.gz
|
||||||
|
usr/share/man/man3/seccomp_attr_get.3.gz
|
||||||
|
usr/share/man/man3/seccomp_attr_set.3.gz
|
||||||
|
usr/share/man/man3/seccomp_export_bpf.3.gz
|
||||||
|
usr/share/man/man3/seccomp_export_pfc.3.gz
|
||||||
|
usr/share/man/man3/seccomp_init.3.gz
|
||||||
|
usr/share/man/man3/seccomp_load.3.gz
|
||||||
|
usr/share/man/man3/seccomp_merge.3.gz
|
||||||
|
usr/share/man/man3/seccomp_release.3.gz
|
||||||
|
usr/share/man/man3/seccomp_reset.3.gz
|
||||||
|
usr/share/man/man3/seccomp_rule_add.3.gz
|
||||||
|
usr/share/man/man3/seccomp_rule_add_array.3.gz
|
||||||
|
usr/share/man/man3/seccomp_rule_add_exact.3.gz
|
||||||
|
usr/share/man/man3/seccomp_rule_add_exact_array.3.gz
|
||||||
|
usr/share/man/man3/seccomp_syscall_priority.3.gz
|
||||||
|
usr/share/man/man3/seccomp_syscall_resolve_name.3.gz
|
||||||
|
usr/share/man/man3/seccomp_syscall_resolve_name_arch.3.gz
|
||||||
|
usr/share/man/man3/seccomp_syscall_resolve_name_rewrite.3.gz
|
||||||
|
usr/share/man/man3/seccomp_syscall_resolve_num_arch.3.gz
|
||||||
|
usr/share/man/man3/seccomp_version.3.gz
|
||||||
|
|
BIN
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/mtree
vendored
Normal file
BIN
ext/featurefmt/alpm/testdata/libseccomp-2.3.2-2/mtree
vendored
Normal file
Binary file not shown.
42
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/desc
vendored
Normal file
42
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/desc
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
%NAME%
|
||||||
|
zlib
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
1:1.2.11-2
|
||||||
|
|
||||||
|
%BASE%
|
||||||
|
zlib
|
||||||
|
|
||||||
|
%DESC%
|
||||||
|
Compression library implementing the deflate compression method found in gzip and PKZIP
|
||||||
|
|
||||||
|
%URL%
|
||||||
|
http://www.zlib.net/
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
x86_64
|
||||||
|
|
||||||
|
%BUILDDATE%
|
||||||
|
1499892515
|
||||||
|
|
||||||
|
%INSTALLDATE%
|
||||||
|
1517507911
|
||||||
|
|
||||||
|
%PACKAGER%
|
||||||
|
Antonio Rojas <arojas@archlinux.org>
|
||||||
|
|
||||||
|
%SIZE%
|
||||||
|
333824
|
||||||
|
|
||||||
|
%REASON%
|
||||||
|
1
|
||||||
|
|
||||||
|
%LICENSE%
|
||||||
|
custom
|
||||||
|
|
||||||
|
%VALIDATION%
|
||||||
|
pgp
|
||||||
|
|
||||||
|
%DEPENDS%
|
||||||
|
glibc
|
||||||
|
|
20
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/files
vendored
Normal file
20
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/files
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
%FILES%
|
||||||
|
usr/
|
||||||
|
usr/include/
|
||||||
|
usr/include/zconf.h
|
||||||
|
usr/include/zlib.h
|
||||||
|
usr/lib/
|
||||||
|
usr/lib/libz.a
|
||||||
|
usr/lib/libz.so
|
||||||
|
usr/lib/libz.so.1
|
||||||
|
usr/lib/libz.so.1.2.11
|
||||||
|
usr/lib/pkgconfig/
|
||||||
|
usr/lib/pkgconfig/zlib.pc
|
||||||
|
usr/share/
|
||||||
|
usr/share/licenses/
|
||||||
|
usr/share/licenses/zlib/
|
||||||
|
usr/share/licenses/zlib/LICENSE
|
||||||
|
usr/share/man/
|
||||||
|
usr/share/man/man3/
|
||||||
|
usr/share/man/man3/zlib.3.gz
|
||||||
|
|
BIN
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/mtree
vendored
Normal file
BIN
ext/featurefmt/alpm/testdata/zlib-1:1.2.11-2/mtree
vendored
Normal file
Binary file not shown.
@ -84,15 +84,19 @@ func (d detector) Detect(files tarutil.FilesMap) (*database.Namespace, error) {
|
|||||||
switch OS {
|
switch OS {
|
||||||
case "debian", "ubuntu":
|
case "debian", "ubuntu":
|
||||||
versionFormat = dpkg.ParserName
|
versionFormat = dpkg.ParserName
|
||||||
case "centos", "rhel", "fedora", "amzn", "ol", "oracle":
|
case "arch", "centos", "rhel", "fedora", "amzn", "ol", "oracle":
|
||||||
versionFormat = rpm.ParserName
|
versionFormat = rpm.ParserName
|
||||||
default:
|
default:
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if OS != "" && version != "" {
|
if OS != "" {
|
||||||
|
name := OS
|
||||||
|
if version != "" {
|
||||||
|
name = name + ":" + version
|
||||||
|
}
|
||||||
return &database.Namespace{
|
return &database.Namespace{
|
||||||
Name: OS + ":" + version,
|
Name: name,
|
||||||
VersionFormat: versionFormat,
|
VersionFormat: versionFormat,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,24 @@ REDHAT_SUPPORT_PRODUCT_VERSION=20`),
|
|||||||
ExpectedNamespace: nil,
|
ExpectedNamespace: nil,
|
||||||
Files: tarutil.FilesMap{},
|
Files: tarutil.FilesMap{},
|
||||||
},
|
},
|
||||||
|
{ // Arch Linux doesn't have a VERSION_ID
|
||||||
|
ExpectedNamespace: &database.Namespace{Name: "arch"},
|
||||||
|
Files: tarutil.FilesMap{
|
||||||
|
"etc/os-release": []byte(
|
||||||
|
`NAME="Arch Linux"
|
||||||
|
PRETTY_NAME="Arch Linux"
|
||||||
|
ID=arch
|
||||||
|
ID_LIKE=archlinux
|
||||||
|
ANSI_COLOR="0;36"
|
||||||
|
HOME_URL="https://www.archlinux.org/"
|
||||||
|
SUPPORT_URL="https://bbs.archlinux.org/"
|
||||||
|
BUG_REPORT_URL="https://bugs.archlinux.org/"`),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ExpectedNamespace: nil,
|
||||||
|
Files: tarutil.FilesMap{},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
featurens.TestDetector(t, &detector{}, testData)
|
featurens.TestDetector(t, &detector{}, testData)
|
||||||
|
202
ext/vulnsrc/arch/arch.go
Normal file
202
ext/vulnsrc/arch/arch.go
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
// Copyright 2017-2018 clair authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// Package arch implements a vulnerability source updater using the
|
||||||
|
// Arch Linux Security Tracker.
|
||||||
|
package arch
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"github.com/coreos/clair/database"
|
||||||
|
"github.com/coreos/clair/ext/versionfmt/rpm"
|
||||||
|
"github.com/coreos/clair/ext/vulnsrc"
|
||||||
|
"github.com/coreos/clair/pkg/commonerr"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
url = "https://security.archlinux.org/all.json"
|
||||||
|
cveURLPrefix = "https://security.archlinux.org"
|
||||||
|
updaterFlag = "archUpdater"
|
||||||
|
)
|
||||||
|
|
||||||
|
type jsonData []jsonVuln
|
||||||
|
|
||||||
|
type jsonVuln struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Packages []string `json:"packages"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Severity string `json:"severity"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Affected string `json:"affected"`
|
||||||
|
Fixed string `json:"fixed"`
|
||||||
|
Ticket string `json:"ticket"`
|
||||||
|
Issues []string `json:"issues"`
|
||||||
|
Advisories []string `json:"advisories"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type updater struct{}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
vulnsrc.RegisterUpdater("arch", &updater{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *updater) Update(datastore database.Datastore) (resp vulnsrc.UpdateResponse, err error) {
|
||||||
|
log.WithField("package", "Arch Linux").Info("Start fetching vulnerabilities")
|
||||||
|
|
||||||
|
tx, err := datastore.Begin()
|
||||||
|
if err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the SHA-1 of the latest update's JSON data
|
||||||
|
latestHash, ok, err := tx.FindKeyValue(updaterFlag)
|
||||||
|
if err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE(sida): The transaction won't mutate the database and I want the
|
||||||
|
// transaction to be short.
|
||||||
|
if err := tx.Rollback(); err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
latestHash = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Download JSON.
|
||||||
|
r, err := http.Get(url)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("could not download Arch Linux update")
|
||||||
|
return resp, commonerr.ErrCouldNotDownload
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse the JSON.
|
||||||
|
resp, err = buildResponse(r.Body, latestHash)
|
||||||
|
if err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *updater) Clean() {}
|
||||||
|
|
||||||
|
func buildResponse(jsonReader io.Reader, latestKnownHash string) (resp vulnsrc.UpdateResponse, err error) {
|
||||||
|
hash := latestKnownHash
|
||||||
|
|
||||||
|
// Defer the addition of flag information to the response.
|
||||||
|
defer func() {
|
||||||
|
if err == nil {
|
||||||
|
resp.FlagName = updaterFlag
|
||||||
|
resp.FlagValue = hash
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Create a TeeReader so that we can unmarshal into JSON and write to a SHA-1
|
||||||
|
// digest at the same time.
|
||||||
|
jsonSHA := sha1.New()
|
||||||
|
teedJSONReader := io.TeeReader(jsonReader, jsonSHA)
|
||||||
|
|
||||||
|
// Unmarshal JSON.
|
||||||
|
var data jsonData
|
||||||
|
err = json.NewDecoder(teedJSONReader).Decode(&data)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("could not unmarshal Arch Linux JSON")
|
||||||
|
return resp, commonerr.ErrCouldNotParse
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the hash and skip updating if the hash has been seen before.
|
||||||
|
hash = hex.EncodeToString(jsonSHA.Sum(nil))
|
||||||
|
if latestKnownHash == hash {
|
||||||
|
log.WithField("package", "Arch Linux").Debug("no update")
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract vulnerability data from Arch Linux JSON schema.
|
||||||
|
resp.Vulnerabilities = parseArchLinuxJSON(&data)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseArchLinuxJSON(data *jsonData) (vulnerabilities []database.VulnerabilityWithAffected) {
|
||||||
|
mvulnerabilities := make(map[string]*database.VulnerabilityWithAffected)
|
||||||
|
|
||||||
|
for _, vulnNode := range *data {
|
||||||
|
for _, vulnName := range vulnNode.Issues {
|
||||||
|
// Get or create the vulnerability.
|
||||||
|
vulnerability, vulnerabilityAlreadyExists := mvulnerabilities[vulnName]
|
||||||
|
if !vulnerabilityAlreadyExists {
|
||||||
|
vulnerability = &database.VulnerabilityWithAffected{
|
||||||
|
Vulnerability: database.Vulnerability{
|
||||||
|
Name: vulnName,
|
||||||
|
Link: strings.Join([]string{cveURLPrefix, "/", vulnName}, ""),
|
||||||
|
Severity: database.UnknownSeverity,
|
||||||
|
Description: vulnNode.Type,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vulnerability.Severity = severity(vulnNode.Severity)
|
||||||
|
|
||||||
|
for _, pkgName := range vulnNode.Packages {
|
||||||
|
// Create and add the feature version.
|
||||||
|
pkg := database.AffectedFeature{
|
||||||
|
FeatureName: pkgName,
|
||||||
|
AffectedVersion: vulnNode.Affected,
|
||||||
|
FixedInVersion: vulnNode.Fixed,
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
vulnerability.Affected = append(vulnerability.Affected, pkg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the vulnerability.
|
||||||
|
mvulnerabilities[vulnName] = vulnerability
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the vulnerabilities map to a slice
|
||||||
|
for _, v := range mvulnerabilities {
|
||||||
|
vulnerabilities = append(vulnerabilities, *v)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func severity(severity string) database.Severity {
|
||||||
|
switch severity {
|
||||||
|
case "Low":
|
||||||
|
return database.LowSeverity
|
||||||
|
case "Medium":
|
||||||
|
return database.MediumSeverity
|
||||||
|
case "High":
|
||||||
|
return database.HighSeverity
|
||||||
|
case "Critical":
|
||||||
|
return database.CriticalSeverity
|
||||||
|
default:
|
||||||
|
log.Warning("could not determine vulnerability severity from: %s.", severity)
|
||||||
|
return database.UnknownSeverity
|
||||||
|
}
|
||||||
|
}
|
148
ext/vulnsrc/arch/arch_test.go
Normal file
148
ext/vulnsrc/arch/arch_test.go
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
// Copyright 2017-2018 clair authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package arch
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/coreos/clair/database"
|
||||||
|
"github.com/coreos/clair/ext/versionfmt/rpm"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestArchLinuxParser(t *testing.T) {
|
||||||
|
_, filename, _, _ := runtime.Caller(0)
|
||||||
|
|
||||||
|
// Test parsing testdata/fetcher_arch_test.json
|
||||||
|
testFile, _ := os.Open(filepath.Join(filepath.Dir(filename)) + "/testdata/fetcher_arch_test.json")
|
||||||
|
response, err := buildResponse(testFile, "")
|
||||||
|
if assert.Nil(t, err) && assert.Len(t, response.Vulnerabilities, 4) {
|
||||||
|
for _, vulnerability := range response.Vulnerabilities {
|
||||||
|
if vulnerability.Name == "CVE-2018-1071" {
|
||||||
|
assert.Equal(t, "https://security.archlinux.org/CVE-2018-1071", vulnerability.Link)
|
||||||
|
assert.Equal(t, database.MediumSeverity, vulnerability.Severity)
|
||||||
|
assert.Equal(t, "denial of service", vulnerability.Description)
|
||||||
|
|
||||||
|
expectedFeatures := []database.AffectedFeature{
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "zsh",
|
||||||
|
AffectedVersion: "5.4.2-1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, expectedFeature := range expectedFeatures {
|
||||||
|
assert.Contains(t, vulnerability.Affected, expectedFeature)
|
||||||
|
}
|
||||||
|
} else if vulnerability.Name == "CVE-2018-5146" {
|
||||||
|
assert.Equal(t, "https://security.archlinux.org/CVE-2018-5146", vulnerability.Link)
|
||||||
|
assert.Equal(t, database.CriticalSeverity, vulnerability.Severity)
|
||||||
|
assert.Equal(t, "multiple issues", vulnerability.Description)
|
||||||
|
|
||||||
|
expectedFeatures := []database.AffectedFeature{
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "lib32-libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, expectedFeature := range expectedFeatures {
|
||||||
|
assert.Contains(t, vulnerability.Affected, expectedFeature)
|
||||||
|
}
|
||||||
|
} else if vulnerability.Name == "CVE-2017-14633" {
|
||||||
|
assert.Equal(t, "https://security.archlinux.org/CVE-2017-14633", vulnerability.Link)
|
||||||
|
assert.Equal(t, database.CriticalSeverity, vulnerability.Severity)
|
||||||
|
assert.Equal(t, "multiple issues", vulnerability.Description)
|
||||||
|
|
||||||
|
expectedFeatures := []database.AffectedFeature{
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "lib32-libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, expectedFeature := range expectedFeatures {
|
||||||
|
assert.Contains(t, vulnerability.Affected, expectedFeature)
|
||||||
|
}
|
||||||
|
} else if vulnerability.Name == "CVE-2017-14632" {
|
||||||
|
assert.Equal(t, "https://security.archlinux.org/CVE-2017-14632", vulnerability.Link)
|
||||||
|
assert.Equal(t, database.CriticalSeverity, vulnerability.Severity)
|
||||||
|
assert.Equal(t, "multiple issues", vulnerability.Description)
|
||||||
|
|
||||||
|
expectedFeatures := []database.AffectedFeature{
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Namespace: database.Namespace{
|
||||||
|
Name: "arch",
|
||||||
|
VersionFormat: rpm.ParserName,
|
||||||
|
},
|
||||||
|
FeatureName: "lib32-libvorbis",
|
||||||
|
FixedInVersion: "1.3.6-1",
|
||||||
|
AffectedVersion: "1.3.5-1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, expectedFeature := range expectedFeatures {
|
||||||
|
assert.Contains(t, vulnerability.Affected, expectedFeature)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
assert.Fail(t, "Wrong vulnerability name: ", vulnerability.Namespace.Name+":"+vulnerability.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
58
ext/vulnsrc/arch/testdata/fetcher_arch_test.json
vendored
Normal file
58
ext/vulnsrc/arch/testdata/fetcher_arch_test.json
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "AVG-652",
|
||||||
|
"packages": [
|
||||||
|
"zsh"
|
||||||
|
],
|
||||||
|
"status": "Unknown",
|
||||||
|
"severity": "Medium",
|
||||||
|
"type": "denial of service",
|
||||||
|
"affected": "5.4.2-1",
|
||||||
|
"fixed": null,
|
||||||
|
"ticket": null,
|
||||||
|
"issues": [
|
||||||
|
"CVE-2018-1071"
|
||||||
|
],
|
||||||
|
"advisories": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AVG-367",
|
||||||
|
"packages": [
|
||||||
|
"libvorbis"
|
||||||
|
],
|
||||||
|
"status": "Fixed",
|
||||||
|
"severity": "Critical",
|
||||||
|
"type": "multiple issues",
|
||||||
|
"affected": "1.3.5-1",
|
||||||
|
"fixed": "1.3.6-1",
|
||||||
|
"ticket": null,
|
||||||
|
"issues": [
|
||||||
|
"CVE-2018-5146",
|
||||||
|
"CVE-2017-14633",
|
||||||
|
"CVE-2017-14632"
|
||||||
|
],
|
||||||
|
"advisories": [
|
||||||
|
"ASA-201803-12"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AVG-658",
|
||||||
|
"packages": [
|
||||||
|
"lib32-libvorbis"
|
||||||
|
],
|
||||||
|
"status": "Fixed",
|
||||||
|
"severity": "Critical",
|
||||||
|
"type": "multiple issues",
|
||||||
|
"affected": "1.3.5-1",
|
||||||
|
"fixed": "1.3.6-1",
|
||||||
|
"ticket": null,
|
||||||
|
"issues": [
|
||||||
|
"CVE-2018-5146",
|
||||||
|
"CVE-2017-14633",
|
||||||
|
"CVE-2017-14632"
|
||||||
|
],
|
||||||
|
"advisories": [
|
||||||
|
"ASA-201803-21"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user