<?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 known vulnerabilities detected by OWASP Dependency Check -->
  <suppress>
    <notes>Ignore netty CVEs in GRPC shaded Netty.</notes>
    <filePath regex="true">.*grpc-netty-shaded.*</filePath>
    <cpe>cpe:/a:netty:netty</cpe>
  </suppress>
  <suppress>
    <notes>Suppress all pulsar-presto-distribution vulnerabilities</notes>
    <filePath regex="true">.*pulsar-presto-distribution-.*</filePath>
    <vulnerabilityName regex="true">.*</vulnerabilityName>
  </suppress>
  <suppress>
    <notes>Suppress libthrift-0.12.0.jar vulnerabilities</notes>
    <gav>org.apache.thrift:libthrift:0.12.0</gav>
    <vulnerabilityName regex="true">.*</vulnerabilityName>
  </suppress>
  <suppress>
    <notes>Suppress Zookeeper 3.6.2 vulnerabilities</notes>
    <gav regex="true">org\.apache\.zookeeper:.*:3\.6\.2</gav>
    <vulnerabilityName regex="true">.*</vulnerabilityName>
  </suppress>

  <!-- see https://github.com/apache/pulsar/pull/14629-->
  <suppress>
      <notes><![CDATA[
  file name: kotlin-stdlib-common-1.4.32.jar
  ]]></notes>
      <sha1>ef50bfa2c0491a11dcc35d9822edbfd6170e1ea2</sha1>
      <cpe>cpe:/a:jetbrains:kotlin</cpe>
  </suppress>
  <suppress>
      <notes><![CDATA[
  file name: kotlin-stdlib-jdk7-1.4.32.jar
  ]]></notes>
      <sha1>3546900a3ebff0c43f31190baf87a9220e37b7ea</sha1>
      <cve>CVE-2022-24329</cve>
  </suppress>
  <suppress>
      <notes><![CDATA[
  file name: kotlin-stdlib-jdk8-1.4.32.jar
  ]]></notes>
      <sha1>3302f9ec8a5c1ed220781dbd37770072549bd333</sha1>
      <cve>CVE-2022-24329</cve>
  </suppress>
  <suppress>
      <notes><![CDATA[
  file name: kotlin-stdlib-1.4.32.jar
  ]]></notes>
      <sha1>461367948840adbb0839c51d91ed74ef4a9ccb52</sha1>
      <cve>CVE-2022-24329</cve>
  </suppress>

  <!-- clickhouse: security scan matches client lib to the server CVEs -->
  <suppress>
    <notes><![CDATA[
    file name: avro-1.10.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/org\.apache\.avro/avro@.*$</packageUrl>
    <cve>CVE-2021-43045</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2018-14668</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2018-14669</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2018-14670</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2018-14671</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2018-14672</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2019-15024</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2019-16535</cve>
  </suppress>
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2019-18657</cve>
  </suppress> 
  <suppress>
    <notes><![CDATA[
    file name: clickhouse-jdbc-0.3.2.jar
    ]]></notes>
    <packageUrl regex="true">^pkg:maven/ru\.yandex\.clickhouse/clickhouse\-jdbc@.*$</packageUrl>
    <cve>CVE-2021-25263</cve>
  </suppress>
</suppressions>
