示例#1
0
    def test_filename_is(self, checker_name, file_name, expected_results):
        """ Test a checker's filename detection"""
        checkers = pkg_resources.iter_entry_points("cve_bin_tool.checker")
        for checker in checkers:
            if checker.name == checker_name:
                Checker = checker.load()
                checker = Checker()

                result = checker.get_version([""], file_name)

                if "is_or_contains" in result:
                    results = [dict()]
                    results[0] = result
                else:
                    results = result

                for result, expected_result in zip(results, expected_results):
                    assert result["is_or_contains"] == "is"
示例#2
0
    def test_filename_is(self, checker_name, file_name, expected_results):
        """Test a checker's filename detection"""
        checkers = importlib_metadata.entry_points()["cve_bin_tool.checker"]
        for checker in checkers:
            if checker.name == checker_name:
                Checker = checker.load()
                checker = Checker()

                result = checker.get_version("", file_name)

                if "is_or_contains" in result:
                    results = [dict()]
                    results[0] = result
                else:
                    results = result

                for result, expected_result in zip(results, expected_results):
                    assert result["is_or_contains"] == "is"
示例#3
0
    def test_glibc_latest_version(self):
        """Checker didn't detect latest version of glibc"""

        common_versions = [
            # common strings generated by a compiler
            r"$Pj?PW\n"
            r"D$ P\n"
            r"D$0PW\n"
            r"GNU C Library (GNU libc) release release version\n",
            r"Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.\n",
            r"Compiled by GNU CC version 10.2.1 20200804 (Red Hat 10.2.1-2).\n",
            # bare version strings.
            r"GLIBC_2.0\n",
            r"GLIBC_2.1\n",
            r"GLIBC_2.1.1\n",
            r"GLIBC_2.3\n",
            r"GLIBC_2.3.2\n",
            r"GLIBC_2.12\n",
            r"GLIBC_2.23\n",
            r"GLIBC_2.30\n",
            r"GLIBC_2.32\n",
        ]
        versions_not_considered = [
            "2.0",
            "2.1",
            "2.1.1",
            "2.3.2",
            "2.12",
            "2.23",
            "2.30",
        ]
        file_name = "libc.so.6"
        checkers = pkg_resources.iter_entry_points("cve_bin_tool.checker")
        result = None
        for checker in checkers:
            if checker.name == "glibc":
                Checker = checker.load()
                checker = Checker()

                result = checker.get_version(common_versions, file_name)

        if "is_or_contains" in result:
            assert result["version"] not in versions_not_considered