<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.

-->
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
  <!-- add supressions for false-positives detected by OWASP Dependency Check -->
  <suppress>
    <notes>
      apache:http_server is not used.
    </notes>
    <cpe>cpe:/a:apache:http_server</cpe>
  </suppress>
  <suppress>
    <notes>pulsar-zookeeper-utils gets mixed with zookeeper.</notes>
    <gav regex="true">org\.apache\.pulsar:.*</gav>
    <cpe>cpe:/a:apache:zookeeper</cpe>
  </suppress>
  <suppress>
    <notes>
      apache:apache_http_server is not used.
    </notes>
    <cpe>cpe:/a:apache:apache_http_server</cpe>
  </suppress>
  <suppress>
    <notes>pulsar-package-bookkeeper-storage gets mixed with bookkeeper.</notes>
    <gav regex="true">org\.apache\.pulsar:.*</gav>
    <cpe>cpe:/a:apache:bookkeeper</cpe>
  </suppress>
  <suppress>
    <notes>kubernetes client doesn't contain CVE-2020-8554</notes>
    <gav regex="true">io\.kubernetes:.*</gav>
    <cve>CVE-2020-8554</cve>
  </suppress>
  <suppress>
    <notes>avro doesn't contain CVE-2019-17195</notes>
    <gav regex="true">org\.apache\.avro:.*</gav>
    <cve>CVE-2019-17195</cve>
  </suppress>
  <suppress>
    <notes>CVE-2021-43045 affects only .NET distro, see https://github.com/apache/avro/pull/1357</notes>
    <gav regex="true">org\.apache\.avro:.*</gav>
    <cve>CVE-2021-43045</cve>
  </suppress>
  <suppress base="true">
    <notes><![CDATA[
        FP per #3889
        ]]></notes>
    <packageUrl regex="true">^pkg:maven/io\.netty/netty\-tcnative\-classes@.*$</packageUrl>
    <cpe>cpe:/a:netty:netty</cpe>
  </suppress>

  <!-- google-http-client-gson getting confused with gson-->
  <suppress>
    <notes><![CDATA[
   file name: google-http-client-gson-1.41.0.jar
   ]]></notes>
    <sha1>1a754a5dd672218a2ac667d7ff2b28df7a5a240e</sha1>
    <cve>CVE-2022-25647</cve>
  </suppress>

  <suppress>
    <notes>commons-net is not used at all and therefore commons-net vulnerability CVE-2021-37533 is a false positive.</notes>
    <cve>CVE-2021-37533</cve>
  </suppress>

  <suppress>
    <notes>fredsmith utils library is not used at all. CVE-2021-4277 is a false positive.</notes>
    <cve>CVE-2021-4277</cve>
  </suppress>

  <suppress>
    <notes>yaml_project is not used at all. Any CVEs reported for yaml_project are false positives.</notes>
    <cpe>cpe:/a:yaml_project:yaml</cpe>
  </suppress>

  <suppress>
    <notes>flat_project is not used at all.</notes>
    <cpe>cpe:/a:flat_project:flat</cpe>
  </suppress>
</suppressions>