def testYumDetectUnsupportedTransport(self):
        artifact = "YumSources"
        parser = config_file.YumPackageSourceParser()
        sources = {
            "/etc/yum.repos.d/noproblems.repo":
            r"""
            # comment 1
            [centosdvdiso]
            name=CentOS DVD ISO
            baseurl=https://mirror1.centos.org/CentOS/6/os/i386/
            enabled=1
            gpgcheck=1
            gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6

            # comment2
            [examplerepo]
            name=Example Repository
            baseurl = https://mirror3.centos.org/CentOS/6/os/i386/
            enabled=1
            gpgcheck=1
            gpgkey=http://mirror.centos.org/CentOS/6/os/i386/RPM-GPG-KEY
            """,
            "/etc/yum.repos.d/test.repo":
            r"""
            [centosdvdiso]
            name=CentOS DVD ISO
            baseurl=file:///mnt/
            https://mirror1.centos.org/CentOS/6/os/i386/
            """,
            "/etc/yum.repos.d/test2.repo":
            r"""
            [centosdvdiso]
            name=CentOS DVD ISO
            baseurl=http://mirror1.centos.org/CentOS/6/os/i386/
            """,
            "/etc/yum.repos.d/file-test.repo":
            r"""
            [centosdvdiso]
            name=CentOS DVD ISO
            baseurl=file:///mnt/
            """
        }

        chk_id = "CIS-PKG-SOURCE-UNSUPPORTED-TRANSPORT"
        exp = "Found: Yum sources use unsupported transport."
        found = [
            "/etc/yum.repos.d/test.repo: transport: file,https",
            "/etc/yum.repos.d/test2.repo: transport: http",
            "/etc/yum.repos.d/file-test.repo: transport: file"
        ]
        results = self.GenResults([artifact], [sources], [parser])
        self.assertCheckDetectedAnom(chk_id, results, exp, found)
Exemple #2
0
  def testPackageSourceData(self):
    test_data = r"""
    # comment 1
    [centosdvdiso]
    name=CentOS DVD ISO
    baseurl=file:///mnt
    http://mirror1.centos.org/CentOS/6/os/i386/
    baseurl =ssh://mirror2.centos.org/CentOS/6/os/i386/
    enabled=1
    gpgcheck=1
    gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6

    # comment2
    [examplerepo]
    name=Example Repository
    baseurl = https://mirror3.centos.org/CentOS/6/os/i386/
    enabled=1
    gpgcheck=1
    gpgkey=http://mirror.centos.org/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6

    """
    file_obj = StringIO.StringIO(test_data)
    pathspec = rdf_paths.PathSpec(path="/etc/yum.repos.d/test1.repo")
    stat = rdf_client.StatEntry(pathspec=pathspec)
    parser = config_file.YumPackageSourceParser()
    results = list(parser.Parse(stat, file_obj, None))

    result = [
        d for d in results if isinstance(d, rdf_protodict.AttributedDict)
    ][0]

    self.assertEqual("/etc/yum.repos.d/test1.repo", result.filename)
    self.assertEqual(4, len(result.uris))

    self.assertEqual("file", result.uris[0].transport)
    self.assertEqual("", result.uris[0].host)
    self.assertEqual("/mnt", result.uris[0].path)

    self.assertEqual("http", result.uris[1].transport)
    self.assertEqual("mirror1.centos.org", result.uris[1].host)
    self.assertEqual("/CentOS/6/os/i386/", result.uris[1].path)

    self.assertEqual("ssh", result.uris[2].transport)
    self.assertEqual("mirror2.centos.org", result.uris[2].host)
    self.assertEqual("/CentOS/6/os/i386/", result.uris[2].path)

    self.assertEqual("https", result.uris[3].transport)
    self.assertEqual("mirror3.centos.org", result.uris[3].host)
    self.assertEqual("/CentOS/6/os/i386/", result.uris[3].path)
Exemple #3
0
  def testEmptySourceData(self):
    test_data = ("# comment 1\n"
                 "baseurl=\n"
                 "# Trailing whitespace on purpose\n"
                 "baseurl=      \n"
                 "# Trailing whitespace on purpose\n"
                 "baseurl =            \n"
                 "baseurl\n"
                 "# comment 2\n")

    file_obj = StringIO.StringIO(test_data)
    pathspec = rdf_paths.PathSpec(path="/etc/yum.repos.d/emptytest.repo")
    stat = rdf_client.StatEntry(pathspec=pathspec)
    parser = config_file.YumPackageSourceParser()
    results = list(parser.Parse(stat, file_obj, None))

    result = [d for d in results if isinstance(d,
                                               rdf_protodict.AttributedDict)][0]

    self.assertEqual("/etc/yum.repos.d/emptytest.repo", result.filename)
    self.assertEqual(0, len(result.uris))