Compare commits

..
Author SHA1 Message Date
Weston Steimel e4fc1af3b8 fix(java): improvements to maven groupid lookups
Signed-off-by: Weston Steimel <commits@weston.slmail.me>
2024-04-18 15:47:08 +01:00
William Murphy 3e71f46fc8 Fix: repeatedly dereference pom variables (#2781)
* Fix: repeatedly dereference pom variables

Previously, if there was more than one layer of variable indirection in
the pom property (propert A says it has the same value as property B,
property B says it has the same value as property C), then Syft would
only dereference one layer. Add a loop to dereference variables until
either dereferencing fails, or until the variable is completely
dereferenced back to a literal.

Signed-off-by: Will Murphy <will.murphy@anchore.com>

* switch to recursive implementation

Signed-off-by: Will Murphy <will.murphy@anchore.com>

* add test cases for degenerate poms

Signed-off-by: Will Murphy <will.murphy@anchore.com>

* switch to recursive implementation

Signed-off-by: Will Murphy <will.murphy@anchore.com>

* remove redundant pieces of test cases

Signed-off-by: Will Murphy <will.murphy@anchore.com>

---------

Signed-off-by: Will Murphy <will.murphy@anchore.com>
2024-04-16 15:44:02 -04:00
dependabot[bot] 3b01e13f92 chore(deps): bump modernc.org/sqlite from 1.29.6 to 1.29.7 (#2783)
Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.29.6 to 1.29.7.
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.29.6...v1.29.7)

---
updated-dependencies:
- dependency-name: modernc.org/sqlite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 11:05:35 -04:00
anchore-actions-token-generator[bot]andwestonsteimel 25c2e60358 chore(deps): update CPE dictionary index (#2780)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: westonsteimel <1593939+westonsteimel@users.noreply.github.com>
2024-04-15 11:15:38 -04:00
dependabot[bot] dc7fa21980 chore(deps): bump github/codeql-action from 3.24.10 to 3.25.0 (#2779)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.10 to 3.25.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/4355270be187e1b672a7a1c7c7bae5afdc1ab94a...df5a14dc28094dc936e103b37d749c6628682b60)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 10:00:54 -04:00
Weston Steimel 587690b875 chore: fix broken cpe index generation task (#2778)
Signed-off-by: Weston Steimel <commits@weston.slmail.me>
2024-04-15 09:39:57 -04:00
dependabot[bot] 21eaa5c82b chore(deps): bump github.com/docker/docker (#2773)
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 26.0.0+incompatible to 26.0.1+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v26.0.0...v26.0.1)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 15:33:27 -04:00
dependabot[bot] 081ec04b3f chore(deps): bump peter-evans/create-pull-request from 6.0.2 to 6.0.3 (#2774)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/70a41aba780001da0a30141984ae2a0c95d8704e...c55203cfde3e5c11a452d352b4393e68b85b4533)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 15:31:36 -04:00
Keith ZantowandWill Murphy dde5d349b1 fix: more robust go main version extraction (#2767)
Signed-off-by: Keith Zantow <kzantow@gmail.com>
Signed-off-by: Will Murphy <will.murphy@anchore.com>
Co-authored-by: Will Murphy <will.murphy@anchore.com>
2024-04-11 11:58:51 -04:00
anchore-actions-token-generator[bot]andspiffcs a5d77b9263 chore(deps): update tools to latest versions (#2768)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-04-11 11:53:55 -04:00
Laurent GoderreandKeith Zantow c9aab4863b fix: binary character in java version (#2766)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
Signed-off-by: Keith Zantow <kzantow@gmail.com>
Co-authored-by: Keith Zantow <kzantow@gmail.com>
2024-04-11 10:32:24 -04:00
anchore-actions-token-generator[bot]andspiffcs af1a065d2a chore(deps): update tools to latest versions (#2760)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-04-09 12:03:12 -04:00
dependabot[bot] 88cef1e05c chore(deps): bump modernc.org/sqlite from 1.29.5 to 1.29.6 (#2761)
Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.29.5 to 1.29.6.
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.29.5...v1.29.6)

---
updated-dependencies:
- dependency-name: modernc.org/sqlite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 12:02:56 -04:00
dependabot[bot] 870d97ca5a chore(deps): bump github.com/jedib0t/go-pretty/v6 from 6.5.6 to 6.5.8 (#2754)
Bumps [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) from 6.5.6 to 6.5.8.
- [Release notes](https://github.com/jedib0t/go-pretty/releases)
- [Commits](https://github.com/jedib0t/go-pretty/compare/v6.5.6...v6.5.8)

---
updated-dependencies:
- dependency-name: github.com/jedib0t/go-pretty/v6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 12:19:45 -04:00
dependabot[bot] e681bc4780 chore(deps): bump github.com/gkampitakis/go-snaps from 0.5.2 to 0.5.3 (#2755)
Bumps [github.com/gkampitakis/go-snaps](https://github.com/gkampitakis/go-snaps) from 0.5.2 to 0.5.3.
- [Release notes](https://github.com/gkampitakis/go-snaps/releases)
- [Commits](https://github.com/gkampitakis/go-snaps/compare/v0.5.2...v0.5.3)

---
updated-dependencies:
- dependency-name: github.com/gkampitakis/go-snaps
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 12:19:32 -04:00
dependabot[bot] c31696f131 chore(deps): bump github/codeql-action from 3.24.9 to 3.24.10 (#2756)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.9 to 3.24.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1b1aada464948af03b950897e5eb522f92603cc2...4355270be187e1b672a7a1c7c7bae5afdc1ab94a)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 12:19:20 -04:00
dependabot[bot] 67781e98a2 chore(deps): bump golang.org/x/mod from 0.16.0 to 0.17.0 (#2751)
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.16.0 to 0.17.0.
- [Commits](https://github.com/golang/mod/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 19:22:00 +00:00
Laurent Goderre 619ace65c3 Differentiate between JRE and JDK (#2748)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
2024-04-05 15:10:58 -04:00
dependabot[bot] 3e4e3bb1d4 chore(deps): bump golang.org/x/net from 0.23.0 to 0.24.0 (#2752)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/net/compare/v0.23.0...v0.24.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 15:10:15 -04:00
anchore-actions-token-generator[bot]andspiffcs 1e31356c49 chore(deps): update tools to latest versions (#2744)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-04-04 10:34:19 -04:00
dependabot[bot] 0fa925e5af chore(deps): bump golang.org/x/net from 0.22.0 to 0.23.0 (#2747)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 10:34:03 -04:00
Christopher Angelo Phillips e100776f22 chore: update anchore/packageurl-go to use latest commits (#2746)
chore: update packageurl-go dependency to use latest commits
chore: go mod tidy
unit: update + -> %2B
---------
Signed-off-by: Christopher Phillips <christopher.phillips@anchore.com>
2024-04-04 10:33:51 -04:00
Laurent Goderre e0233625cb feat: cataloger for PHP Pecl and PEAR packages (#2604)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
2024-04-02 11:55:56 -04:00
dependabot[bot] e0f5b5a787 chore(deps): bump github.com/go-git/go-git/v5 from 5.11.0 to 5.12.0 (#2743)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.11.0 to 5.12.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.11.0...v5.12.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 14:14:07 -04:00
anchore-actions-token-generator[bot]andspiffcs 9c42c83229 chore(deps): update tools to latest versions (#2741)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-03-30 17:51:21 -04:00
Keith Zantow 01340b2a5c fix: conan poco project cpe (#2740)
Signed-off-by: Keith Zantow <kzantow@gmail.com>
2024-03-28 16:56:24 -04:00
dependabot[bot] 16edb40c72 chore(deps): bump github.com/distribution/reference from 0.5.0 to 0.6.0 (#2738)
Bumps [github.com/distribution/reference](https://github.com/distribution/reference) from 0.5.0 to 0.6.0.
- [Release notes](https://github.com/distribution/reference/releases)
- [Commits](https://github.com/distribution/reference/compare/v0.5.0...v0.6.0)

---
updated-dependencies:
- dependency-name: github.com/distribution/reference
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-28 12:22:00 -04:00
dependabot[bot] 5a865d0d90 chore(deps): bump anchore/sbom-action from 0.15.9 to 0.15.10 (#2737) 2024-03-27 17:52:22 +00:00
Keith Zantow 410867ca0c fix: panic scanning binaries without symtab (#2739)
Signed-off-by: Keith Zantow <kzantow@gmail.com>
2024-03-27 13:51:45 -04:00
guangwu 469b4c13bb chore: remove useless code (#2716)
Signed-off-by: guoguangwu <guoguangwug@gmail.com>
2024-03-26 12:21:03 -04:00
dependabot[bot] 57e9cc52a4 chore(deps): bump google.golang.org/protobuf from 1.31.0 to 1.33.0 (#2731)
Bumps google.golang.org/protobuf from 1.31.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 11:52:50 -04:00
dependabot[bot] 55fff0f4a1 chore(deps): bump github/codeql-action from 3.24.8 to 3.24.9 (#2732)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.8 to 3.24.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/05963f47d870e2cb19a537396c1f668a348c7d8f...1b1aada464948af03b950897e5eb522f92603cc2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 11:50:31 -04:00
anchore-actions-token-generator[bot]andspiffcs 2a7b4f3761 chore(deps): update tools to latest versions (#2733)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-03-26 11:50:21 -04:00
dependabot[bot] fe3704d4a9 chore(deps): bump github.com/jedib0t/go-pretty/v6 from 6.5.5 to 6.5.6 (#2734)
Bumps [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) from 6.5.5 to 6.5.6.
- [Release notes](https://github.com/jedib0t/go-pretty/releases)
- [Commits](https://github.com/jedib0t/go-pretty/compare/v6.5.5...v6.5.6)

---
updated-dependencies:
- dependency-name: github.com/jedib0t/go-pretty/v6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 11:50:07 -04:00
Hung Nguyen 059cfd6730 update release token from readonly to write token (#2735)
Signed-off-by: Hung Nguyen <hung.tran.nguyen.585@gmail.com>
2024-03-26 09:06:55 -04:00
Colm O hEigeartaigh f4e18961b9 Adding the ability to retrieve remote licenses from package.lock (#2708)
Signed-off-by: Colm O hEigeartaigh <coheigea@apache.org>
2024-03-21 13:20:04 -04:00
Alex Goodman 0d5ebed74a dont include labels for dependabot ecosystems (#2720)
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
2024-03-21 12:16:01 -04:00
dependabot[bot] 8f7305ef78 chore(deps): bump fountainhead/action-wait-for-check from 1.1.0 to 1.2.0 (#2717)
Bumps [fountainhead/action-wait-for-check](https://github.com/fountainhead/action-wait-for-check) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/fountainhead/action-wait-for-check/releases)
- [Commits](https://github.com/fountainhead/action-wait-for-check/compare/297be350cf8393728ea4d4b39435c7d7ae167c93...5a908a24814494009c4bb27c242ea38c93c593be)

---
updated-dependencies:
- dependency-name: fountainhead/action-wait-for-check
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 12:15:30 -04:00
anchore-actions-token-generator[bot]andspiffcs c199b80b88 chore(deps): update tools to latest versions (#2726)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: spiffcs <32073428+spiffcs@users.noreply.github.com>
2024-03-21 12:15:06 -04:00
dependabot[bot] df547020ef chore(deps): bump github/codeql-action from 3.24.7 to 3.24.8 (#2725)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.7 to 3.24.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/3ab4101902695724f9365a384f86c1074d94e18c...05963f47d870e2cb19a537396c1f668a348c7d8f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 12:14:51 -04:00
dependabot[bot] 37094c9751 chore(deps): bump actions/cache from 4.0.1 to 4.0.2 (#2728)
Bumps [actions/cache](https://github.com/actions/cache) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/ab5e6d0c87105b4c9c2047343972218f562e4319...0c45773b623bea8c8e75f6c82b208c3cf94ea4f9)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 12:14:43 -04:00
dependabot[bot] c83556e7b6 chore(deps): bump github.com/docker/docker (#2730)
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 25.0.4+incompatible to 26.0.0+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v25.0.4...v26.0.0)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 12:14:32 -04:00
Hung Nguyen 3ac1cd7a9f updating credentials to scoped permissions (#2722)
* updating credentials to scoped permissions

Signed-off-by: Hung Nguyen <hung.tran.nguyen.585@gmail.com>

---------

Signed-off-by: Hung Nguyen <hung.tran.nguyen.585@gmail.com>
2024-03-20 17:35:07 -04:00
dependabot[bot] 96d2b4a368 chore(deps): bump github.com/jedib0t/go-pretty/v6 from 6.5.4 to 6.5.5 (#2718)
Bumps [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) from 6.5.4 to 6.5.5.
- [Release notes](https://github.com/jedib0t/go-pretty/releases)
- [Commits](https://github.com/jedib0t/go-pretty/compare/v6.5.4...v6.5.5)

---
updated-dependencies:
- dependency-name: github.com/jedib0t/go-pretty/v6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-15 10:33:11 -04:00
dependabot[bot] 807de976c4 chore(deps): bump github.com/google/go-containerregistry (#2719)
Bumps [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry) from 0.19.0 to 0.19.1.
- [Release notes](https://github.com/google/go-containerregistry/releases)
- [Changelog](https://github.com/google/go-containerregistry/blob/main/.goreleaser.yml)
- [Commits](https://github.com/google/go-containerregistry/compare/v0.19.0...v0.19.1)

---
updated-dependencies:
- dependency-name: github.com/google/go-containerregistry
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-15 10:32:51 -04:00
Laurent GoderreandAlex Goodman cf17bd69b2 Add detection for Oracle GraalVM (#2705)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
Co-authored-by: Alex Goodman <wagoodman@users.noreply.github.com>
2024-03-14 15:40:07 +00:00
dependabot[bot] 1c8d29d577 chore(deps): bump docker/login-action from 3.0.0 to 3.1.0 (#2714)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/343f7c4344506bcbf9b4de18042ae17996df046d...e92390c5fb421da1463c202d546fed0ec5c39f20)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 11:16:16 -04:00
6a2517b5d2 Add ELF binary package cataloger (#2396)
* feat Adds Elf package catalogger

Signed-off-by: Brian Ebarb <ebarb.brian@gmail.com>

* Add test fixtures for elf package

Signed-off-by: Colleen Divers <colleen.divers@gmail.com>

* bump JSON schema to v16.0.6 + expand test fixtures

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* less verbose logging

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* remove dead test code

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* remove unreleated swift change

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

---------

Signed-off-by: Brian Ebarb <ebarb.brian@gmail.com>
Signed-off-by: Colleen Divers <colleen.divers@gmail.com>
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
Co-authored-by: Colleen Divers <colleen.divers@gmail.com>
Co-authored-by: Alex Goodman <wagoodman@users.noreply.github.com>
2024-03-14 11:16:03 -04:00
dependabot[bot] 7ab6fc3fe4 chore(deps): bump modernc.org/sqlite from 1.29.3 to 1.29.5 (#2710)
Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.29.3 to 1.29.5.
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.29.3...v1.29.5)

---
updated-dependencies:
- dependency-name: modernc.org/sqlite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 09:58:56 -04:00
dependabot[bot] 2051a62ded chore(deps): bump github/codeql-action from 3.24.6 to 3.24.7 (#2711)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.6 to 3.24.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8a470fddafa5cbb6266ee11b37ef4d8aae19c571...3ab4101902695724f9365a384f86c1074d94e18c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 09:58:42 -04:00
68 changed files with 3637 additions and 493 deletions
+6 -6
View File
@@ -2,7 +2,7 @@ tools:
# we want to use a pinned version of binny to manage the toolchain (so binny manages itself!)
- name: binny
version:
want: v0.6.3
want: v0.7.0
method: github-release
with:
repo: anchore/binny
@@ -26,7 +26,7 @@ tools:
# used for linting
- name: golangci-lint
version:
want: v1.56.2
want: v1.57.2
method: github-release
with:
repo: golangci/golangci-lint
@@ -42,7 +42,7 @@ tools:
# used for signing the checksums file at release
- name: cosign
version:
want: v2.2.3
want: v2.2.4
method: github-release
with:
repo: sigstore/cosign
@@ -58,7 +58,7 @@ tools:
# used to release all artifacts
- name: goreleaser
version:
want: v1.24.0
want: v1.25.1
method: github-release
with:
repo: goreleaser/goreleaser
@@ -103,7 +103,7 @@ tools:
# used for running all local and CI tasks
- name: task
version:
want: v3.35.1
want: v3.36.0
method: github-release
with:
repo: go-task/task
@@ -111,7 +111,7 @@ tools:
# used for triggering a release
- name: gh
version:
want: v2.45.0
want: v2.47.0
method: github-release
with:
repo: cli/cli
+8 -1
View File
@@ -1,12 +1,19 @@
version: 2
updates:
- package-ecosystem: gomod
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 10
labels:
- "dependencies"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 10
open-pull-requests-limit: 10
labels:
- "dependencies"
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
uses: ./.github/actions/bootstrap
- name: Restore base benchmark result
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: test/results/benchmark-main.txt
# use base sha for PR or new commit hash for main push in benchmark result key
+3 -3
View File
@@ -45,7 +45,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 #v3.24.6
uses: github/codeql-action/init@df5a14dc28094dc936e103b37d749c6628682b60 #v3.25.0
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -56,7 +56,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 #v3.24.6
uses: github/codeql-action/autobuild@df5a14dc28094dc936e103b37d749c6628682b60 #v3.25.0
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -70,4 +70,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 #v3.24.6
uses: github/codeql-action/analyze@df5a14dc28094dc936e103b37d749c6628682b60 #v3.25.0
+12 -12
View File
@@ -24,7 +24,7 @@ jobs:
git tag ${{ github.event.inputs.version }}
- name: Check static analysis results
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: static-analysis
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -33,7 +33,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Check unit test results
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: unit
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -42,7 +42,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Check integration test results
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: integration
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -51,7 +51,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Check acceptance test results (linux)
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: acceptance-linux
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -60,7 +60,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Check acceptance test results (mac)
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: acceptance-mac
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -69,7 +69,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Check cli test results (linux)
uses: fountainhead/action-wait-for-check@297be350cf8393728ea4d4b39435c7d7ae167c93 # v1.1.0
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: cli-linux
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -105,13 +105,13 @@ jobs:
uses: ./.github/actions/bootstrap
- name: Login to Docker Hub
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d #v3.0.0
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 #v3.1.0
with:
username: ${{ secrets.TOOLBOX_DOCKER_USER }}
password: ${{ secrets.TOOLBOX_DOCKER_PASS }}
username: ${{ secrets.ANCHOREOSSWRITE_DH_USERNAME }}
password: ${{ secrets.ANCHOREOSSWRITE_DH_PAT }}
- name: Login to GitHub Container Registry
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d #v3.0.0
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 #v3.1.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -138,12 +138,12 @@ jobs:
# for creating the release (requires write access to packages and content)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# for updating brew formula in anchore/homebrew-syft
GITHUB_BREW_TOKEN: ${{ secrets.ANCHORE_GIT_READ_TOKEN }}
GITHUB_BREW_TOKEN: ${{ secrets.ANCHOREOPS_GITHUB_OSS_WRITE_TOKEN }}
# for updating the VERSION file in S3...
AWS_ACCESS_KEY_ID: ${{ secrets.TOOLBOX_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TOOLBOX_AWS_SECRET_ACCESS_KEY }}
- uses: anchore/sbom-action@9fece9e20048ca9590af301449208b2b8861333b #v0.15.9
- uses: anchore/sbom-action@ab5d7b5f48981941c4c5d6bf33aeb98fe3bae38c #v0.15.10
continue-on-error: true
with:
artifact-name: sbom.spdx.json
+1 -1
View File
@@ -50,7 +50,7 @@ jobs:
app_id: ${{ secrets.TOKEN_APP_ID }}
private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}
- uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e #v6.0.2
- uses: peter-evans/create-pull-request@c55203cfde3e5c11a452d352b4393e68b85b4533 #v6.0.3
with:
signoff: true
delete-branch: true
@@ -33,7 +33,7 @@ jobs:
app_id: ${{ secrets.TOKEN_APP_ID }}
private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}
- uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e #v6.0.2
- uses: peter-evans/create-pull-request@c55203cfde3e5c11a452d352b4393e68b85b4533 #v6.0.3
with:
signoff: true
delete-branch: true
@@ -44,7 +44,7 @@ jobs:
app_id: ${{ secrets.TOKEN_APP_ID }}
private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}
- uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e #v6.0.2
- uses: peter-evans/create-pull-request@c55203cfde3e5c11a452d352b4393e68b85b4533 #v6.0.3
with:
signoff: true
delete-branch: true
+15 -15
View File
@@ -37,43 +37,43 @@ jobs:
uses: ./.github/actions/bootstrap
- name: Restore file executable test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/file/cataloger/executable/test-fixtures/elf/bin
key: ${{ runner.os }}-unit-file-executable-elf-cache-${{ hashFiles( 'syft/file/cataloger/executable/test-fixtures/elf/cache.fingerprint' ) }}
- name: Restore file executable shared-info test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/file/cataloger/executable/test-fixtures/shared-info/bin
key: ${{ runner.os }}-unit-file-executable-shared-info-cache-${{ hashFiles( 'syft/file/cataloger/executable/test-fixtures/shared-info/cache.fingerprint' ) }}
- name: Restore Java test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/pkg/cataloger/java/test-fixtures/java-builds/packages
key: ${{ runner.os }}-unit-java-cache-${{ hashFiles( 'syft/pkg/cataloger/java/test-fixtures/java-builds/cache.fingerprint' ) }}
- name: Restore RPM test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/pkg/cataloger/redhat/test-fixtures/rpms
key: ${{ runner.os }}-unit-rpm-cache-${{ hashFiles( 'syft/pkg/cataloger/redhat/test-fixtures/rpms.fingerprint' ) }}
- name: Restore go binary test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/pkg/cataloger/golang/test-fixtures/archs/binaries
key: ${{ runner.os }}-unit-go-binaries-cache-${{ hashFiles( 'syft/pkg/cataloger/golang/test-fixtures/archs/binaries.fingerprint' ) }}
- name: Restore binary cataloger test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/pkg/cataloger/binary/test-fixtures/classifiers/bin
key: ${{ runner.os }}-unit-binary-cataloger-cache-${{ hashFiles( 'syft/pkg/cataloger/binary/test-fixtures/cache.fingerprint' ) }}
- name: Restore Kernel test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: syft/pkg/cataloger/kernel/test-fixtures/cache
key: ${{ runner.os }}-unit-kernel-cache-${{ hashFiles( 'syft/pkg/cataloger/kernel/test-fixtures/cache.fingerprint' ) }}
@@ -96,7 +96,7 @@ jobs:
run: make validate-cyclonedx-schema
- name: Restore integration test cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: ${{ github.workspace }}/cmd/syft/internal/test/integration/test-fixtures/cache
key: ${{ runner.os }}-integration-test-cache-${{ hashFiles('/cmd/syft/internal/test/integration/test-fixtures/cache.fingerprint') }}
@@ -122,7 +122,7 @@ jobs:
# why not use actions/upload-artifact? It is very slow (3 minutes to upload ~600MB of data, vs 10 seconds with this approach).
# see https://github.com/actions/upload-artifact/issues/199 for more info
- name: Upload snapshot artifacts
uses: actions/cache/save@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
# we need to preserve the snapshot data itself as well as the task data that confirms if the
# snapshot build is stale or not. Otherwise the downstream jobs will attempt to rebuild the snapshot
@@ -146,7 +146,7 @@ jobs:
- name: Download snapshot build
id: snapshot-cache
uses: actions/cache/restore@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: |
snapshot
@@ -164,7 +164,7 @@ jobs:
- name: Restore install.sh test image cache
id: install-test-image-cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: ${{ github.workspace }}/test/install/cache
key: ${{ runner.os }}-install-test-image-cache-${{ hashFiles('test/install/cache.fingerprint') }}
@@ -199,7 +199,7 @@ jobs:
- name: Download snapshot build
id: snapshot-cache
uses: actions/cache/restore@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: |
snapshot
@@ -214,7 +214,7 @@ jobs:
- name: Restore docker image cache for compare testing
id: mac-compare-testing-cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: image.tar
key: ${{ runner.os }}-${{ hashFiles('test/compare/mac.sh') }}
@@ -238,14 +238,14 @@ jobs:
uses: ./.github/actions/bootstrap
- name: Restore CLI test-fixture cache
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: ${{ github.workspace }}/test/cli/test-fixtures/cache
key: ${{ runner.os }}-cli-test-cache-${{ hashFiles('test/cli/test-fixtures/cache.fingerprint') }}
- name: Download snapshot build
id: snapshot-cache
uses: actions/cache/restore@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2
with:
path: |
snapshot
+1 -1
View File
@@ -390,7 +390,7 @@ tasks:
generate-cpe-dictionary-index:
desc: Generate the CPE index based off of the latest available CPE dictionary
dir: "syft/pkg/cataloger/common/cpe/dictionary"
dir: "syft/pkg/cataloger/internal/cpegenerate/dictionary"
cmds:
- "go generate"
-7
View File
@@ -249,13 +249,6 @@ func getSource(ctx context.Context, opts *options.Catalog, userInput string, sou
return nil, fmt.Errorf("could not determine source: %w", err)
}
if err != nil {
if userInput == "power-user" {
bus.Notify("Note: the 'power-user' command has been removed.")
}
return nil, fmt.Errorf("failed to construct source from user input %q: %w", userInput, err)
}
return src, nil
}
@@ -460,4 +460,12 @@ var commonTestCases = []testCase{
"Akismet Anti-spam: Spam Protection": "5.3",
},
},
{
name: "find php pecl package",
pkgType: pkg.PhpPeclPkg,
pkgLanguage: pkg.PHP,
pkgInfo: map[string]string{
"memcached": "3.2.0",
},
},
}
@@ -51,17 +51,17 @@ var noAssertion = map[string]string{
"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar": "pkg:maven/sdk/sdk@3.0",
// syft generates incorrect purls
"/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
"/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
"/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar": "pkg:maven/asm/asm@2.2.3",
"/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar": "pkg:maven/asm/asm-commons@2.2.3",
"/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar": "pkg:maven/asm/asm-tree@2.2.3",
"/packages/hudson.war:WEB-INF/slave.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
"/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3_min/xpp3_min@1.1.4c",
"/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar": "pkg:maven/xpp3/xpp3@1.1.4c",
"/packages/hudson.war:WEB-INF/hudson-cli.jar": "pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390",
"/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar": "pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3",
"/packages/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3/xpp3_min@1.1.4c",
//"/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
//"/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
"/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar": "pkg:maven/asm/asm@2.2.3",
"/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar": "pkg:maven/asm/asm-commons@2.2.3",
"/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar": "pkg:maven/asm/asm-tree@2.2.3",
"/packages/hudson.war:WEB-INF/slave.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
"/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3_min/xpp3_min@1.1.4c",
"/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar": "pkg:maven/xpp3/xpp3@1.1.4c",
"/packages/hudson.war:WEB-INF/hudson-cli.jar": "pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390",
"/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar": "pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3",
"/packages/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3/xpp3_min@1.1.4c",
// syft generates an unstable purl
"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-auth": "pkg:maven/org.apache.dubbo/dubbo-auth@3.1.4",
@@ -113,27 +113,467 @@ var noAssertion = map[string]string{
"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-xds": "pkg:maven/org.apache.dubbo/dubbo-xds@3.1.4",
"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
"/packages/dubbo-3.1.4.jar": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
// TODO: Figure out newrelic stuff
"/packages/newrelic-agent-8.8.0.jar:agent-bridge-datastore.jar": "pkg:maven/com.newrelic.agent.java/agent-bridge-datastore@8.8.0",
"/packages/newrelic-agent-8.8.0.jar:agent-bridge.jar": "pkg:maven/com.newrelic.agent.java/agent-bridge@8.8.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-2.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-2.2/akka@2.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-2.11_2.4.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-2.11_2.4.5/akka-http@2.11_2.4.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-2.13_10.1.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-2.13_10.1.8/akka-http@2.13_10.1.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-0.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-0.4/akka-http-core@0.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-0.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-0.7/akka-http-core@0.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-1.0/akka-http-core@1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-10.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-10.0/akka-http-core@10.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-10.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-10.2.0/akka-http-core@10.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-2.11_10.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-10.0.11/akka-http-core@2.11_10.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-2.13_10.1.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-2.13_10.1.8/akka-http-core@2.13_10.1.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/akka-http-core-2.13_10.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.akka-http-core-2.13_10.2.0/akka-http-core@2.13_10.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/anorm-2.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.anorm-2.3/anorm@2.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/anorm-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.anorm-2.4/anorm@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/apache-log4j-1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.apache-log4j-1/apache-log4j@1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/apache-log4j-2.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.apache-log4j-2.11/apache-log4j@2.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/apache-log4j-2.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.apache-log4j-2.6/apache-log4j@2.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/apache-struts-2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.apache-struts-2.0/apache-struts@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/async-http-client-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.async-http-client-2.0.0/async-http-client@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/async-http-client-2.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.async-http-client-2.1.0/async-http-client@2.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-dynamodb-1.11.106-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-dynamodb-1.11.106/aws-java-sdk-dynamodb@1.11.106-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-dynamodb-2.15.34-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-dynamodb-2.15.34/aws-java-sdk-dynamodb@2.15.34-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-s3-1.2.13-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-s3-1.2.13/aws-java-sdk-s3@1.2.13-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-s3-2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-s3-2.0/aws-java-sdk-s3@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-sns-1.11.12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-sns/aws-java-sdk-sns@1.11.12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-sns-2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-sns-2.0/aws-java-sdk-sns@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-sqs-1.10.44-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-sqs-1.10.44/aws-java-sdk-sqs@1.10.44-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-java-sdk-sqs-2.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-java-sdk-sqs-2.1.0/aws-java-sdk-sqs@2.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/aws-wrap-0.7.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.aws-wrap-0.7.0/aws-wrap@0.7.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cassandra-datastax-3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cassandra-datastax-3.0.0/cassandra-datastax@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cassandra-datastax-3.8.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cassandra-datastax-3.8.0/cassandra-datastax@3.8.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cassandra-datastax-4.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cassandra-datastax-4.0.0/cassandra-datastax@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cats-effect-2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cats-effect-2/cats-effect@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cats-effect-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cats-effect-3/cats-effect@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cats-effect-3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cats-effect-3.3.0/cats-effect@3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/cxf-2.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.cxf-2.7/cxf@2.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/ejb-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.ejb-3.0/ejb@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/ejb-4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.ejb-4.0/ejb@4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/glassfish-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.glassfish-3/glassfish@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/glassfish-6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.glassfish-6/glassfish@6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/glassfish-jmx-1.0.jar": "pkg:maven/com.newrelic.instrumentation.glassfish-jmx/glassfish-jmx@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grails-1.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grails-1.3/grails@1.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grails-2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grails-2/grails@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grails-async-2.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grails-async-2.3/grails-async@2.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/graphql-java-16.2-1.0.jar": "pkg:maven/com.graphql-java/graphql-java@16.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/graphql-java-17.0-1.0.jar": "pkg:maven/com.graphql-java/graphql-java@17.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/graphql-java-21.0-1.0.jar": "pkg:maven/com.graphql-java/graphql-java@21.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grpc-1.22.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grpc-1.22.0/grpc@1.22.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grpc-1.30.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grpc-1.30.0/grpc@1.30.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grpc-1.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grpc-1.4.0/grpc@1.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/grpc-1.40.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.grpc-1.40.0/grpc@1.40.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hibernate-3.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hibernate-3.3/hibernate@3.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hibernate-3.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hibernate-3.5/hibernate@3.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hibernate-4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hibernate-4.0/hibernate@4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hibernate-4.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hibernate-4.2/hibernate@4.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hibernate-4.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hibernate-4.3/hibernate@4.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http-async-client-4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http-async-client-4/http-async-client@4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.12_0.21-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.12_0.21/http4s-blaze-client@2.12_0.21-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.12_0.22-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.12_0.22/http4s-blaze-client@2.12_0.22-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.12_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.12_0.23/http4s-blaze-client@2.12_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.13_0.21-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.13_0.21/http4s-blaze-client@2.13_0.21-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.13_0.22-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.13_0.22/http4s-blaze-client@2.13_0.22-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-client-2.13_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-client-2.13_0.23/http4s-blaze-client@2.13_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.12_0.21-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.12_0.21/http4s-blaze-server@2.12_0.21-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.12_0.22-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.12_0.22/http4s-blaze-server@2.12_0.22-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.12_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.12_0.23/http4s-blaze-server@2.12_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.13_0.21-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.13_0.21/http4s-blaze-server@2.13_0.21-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.13_0.22-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.13_0.22/http4s-blaze-server@2.13_0.22-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-blaze-server-2.13_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-blaze-server-2.13_0.23/http4s-blaze-server@2.13_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-ember-client-2.12_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-ember-client-2.12_0.23/http4s-ember-client@2.12_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-ember-client-2.13_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-ember-client-2.13_0.23/http4s-ember-client@2.13_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-ember-server-2.12_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-ember-server-2.12_0.23/http4s-ember-server@2.12_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/http4s-ember-server-2.13_0.23-1.0.jar": "pkg:maven/com.newrelic.instrumentation.http4s-ember-server-2.13_0.23/http4s-ember-server@2.13_0.23-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/httpclient-3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.httpclient-3.1/httpclient@3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/httpclient-4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.httpclient-4.0/httpclient@4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/httpclient-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.httpclient-5.0/httpclient@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/httpclient-jdk11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.httpclient-jdk11/httpclient-jdk11@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/httpurlconnection-1.0.jar": "pkg:maven/com.newrelic.instrumentation.httpurlconnection/httpurlconnection@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hystrix-1.3.15-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hystrix-1.3.15/hystrix@1.3.15-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/hystrix-1.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.hystrix-1.4/hystrix@1.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jakarta.xml-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jakarta.xml/xml@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/java-io-1.0.jar": "pkg:maven/com.newrelic.instrumentation.java-io/java-io@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/java.completable-future-jdk8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.java.completable-future-jdk8/completable-future-jdk8@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/java.completable-future-jdk8u40-1.0.jar": "pkg:maven/com.newrelic.instrumentation.java.completable-future-jdk8u40/completable-future-jdk8u40@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/java.logging-jdk8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.java.logging-jdk8/logging-jdk8@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/javax.xml-1.0.jar": "pkg:maven/com.newrelic.instrumentation.javax.xml/xml@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jax-rs-1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jax-rs-1.0/jax-rs@1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jax-rs-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jax-rs-3.0/jax-rs@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jboss-7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jboss-7/jboss@7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jboss-jmx-7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jboss-jmx-7/jboss-jmx@7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jboss-logging-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jboss.logging/jboss-logging@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jcache-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jcache-1.0.0/jcache@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jcache-datastore-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jcache-datastore-1.0.0/jcache-datastore@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-db2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-db2/jdbc-db2@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-driver-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-driver/jdbc-driver@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-embedded-derby-10.11.1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-embedded-derby-10.11.1.1/jdbc-embedded-derby@10.11.1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-embedded-derby-10.15.1.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-embedded-derby-10.15.1.3/jdbc-embedded-derby@10.15.1.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-generic-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-generic/jdbc-generic@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-h2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-h2/jdbc-h2@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-hsqldb-1.7.2.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-hsqldb-1.7.2.2/jdbc-hsqldb@1.7.2.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-hsqldb-2.2.9-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-hsqldb-2.2.9/jdbc-hsqldb@2.2.9-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-inet-merlia-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-inet-merlia/jdbc-inet-merlia@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-inet-oranxo-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-inet-oranxo/jdbc-inet-oranxo@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-jtds-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-jtds/jdbc-jtds@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-jtds-generic-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-jtds-generic/jdbc-jtds-generic@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mariadb-1.1.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mariadb-1.1.7/jdbc-mariadb@1.1.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mariadb-1.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mariadb-1.3.0/jdbc-mariadb@1.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-3.0.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-3.0.8/jdbc-mysql@3.0.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-6.0.2/jdbc-mysql@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-8.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-8.0.11/jdbc-mysql@8.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-connection-5.1.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-connection-5.1.4/jdbc-mysql-connection@5.1.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-connection-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-connection-6.0.2/jdbc-mysql-connection@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-connection-8.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-connection-8.0.11/jdbc-mysql-connection@8.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-multihost-connections-5.1.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-multihost-connections-5.1.3/jdbc-mysql-multihost-connections@5.1.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-multihost-connections-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-multihost-connections-6.0.2/jdbc-mysql-multihost-connections@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-mysql-multihost-connections-8.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-multihost-connections-8.0.11/jdbc-mysql-multihost-connections@8.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-ojdbc-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-ojdbc/jdbc-ojdbc@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-ojdbc-tns-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-ojdbc-tns/jdbc-ojdbc-tns@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-ojdbc7-12.1.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-ojdbc7-12.1.0.2/jdbc-ojdbc7@12.1.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-ojdbc8-21.1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-ojdbc8-21.1.0.0/jdbc-ojdbc8@21.1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-postgresql-8.0-312.jdbc3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-postgresql-8.0-312.jdbc3/jdbc-postgresql@8.0-312.jdbc3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-postgresql-9.4.1207-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-postgresql-9.4.1207/jdbc-postgresql@9.4.1207-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-postgresql-9.4.1208-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-postgresql-9.4.1208/jdbc-postgresql@9.4.1208-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-resultset-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-resultset/jdbc-resultset@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-socket-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-socket/jdbc-socket@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-socket-jdk21-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-socket-jdk21/jdbc-socket-jdk21@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-sqlserver-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-sqlserver/jdbc-sqlserver@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jdbc-sybase-6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-sybase-6/jdbc-sybase@6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jedis-1.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jedis-1.4.0/jedis@1.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jedis-2.7.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jedis-2.7.1/jedis@2.7.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jedis-2.7.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jedis-2.7.2/jedis@2.7.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jedis-3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jedis-3.0.0/jedis@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jedis-4.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jedis-4.0.0/jedis@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-1/jersey@1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-2/jersey@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-3/jersey@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-client-1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-client-1/jersey-client@1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-client-2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-client-2/jersey-client@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-client-2.26-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-client-2.26/jersey-client@2.26-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jersey-client-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jersey-client-3/jersey-client@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-10-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-10/jetty@10-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-11/jetty@11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-12/jetty@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-9.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-9.3/jetty@9.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-ee10-servlet-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-ee10-servlet-12/jetty-ee10-servlet@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-ee10-servlet-12.0.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-ee10-servlet-12.0.1/jetty-ee10-servlet@12.0.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-ee8-servlet-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-ee8-servlet-12/jetty-ee8-servlet@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-ee9-servlet-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-ee9-servlet-12/jetty-ee9-servlet@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-jmx-7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-jmx-7/jetty-jmx@7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jetty-servlet-9-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jetty-servlet-9/jetty-servlet@9-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jms-1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jms-1.1/jms@1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jms-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jms-3/jms@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jsp-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jsp-2.4/jsp@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/jsp-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jsp-3/jsp@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-config-1.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-config-1.1.0/kafka-clients-config@1.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-heartbeat-0.10.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-heartbeat-0.10.1.0/kafka-clients-heartbeat@0.10.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-heartbeat-2.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-heartbeat-2.1.0/kafka-clients-heartbeat@2.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-metrics-0.10.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-metrics-0.10.0.0/kafka-clients-metrics@0.10.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-metrics-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-metrics-2.0.0/kafka-clients-metrics@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-metrics-3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-metrics-3.0.0/kafka-clients-metrics@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-node-metrics-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-node-metrics-1.0.0/kafka-clients-node-metrics@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-clients-spans-0.11.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-clients-spans-0.11.0.0/kafka-clients-spans@0.11.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-connect-metrics-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-connect-metrics-1.0.0/kafka-connect-metrics@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-connect-spans-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-connect-spans-2.0.0/kafka-connect-spans@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-connect-spans-3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-connect-spans-3.3.0/kafka-connect-spans@3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-streams-metrics-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-streams-metrics-1.0.0/kafka-streams-metrics@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-streams-spans-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-streams-spans-2.0.0/kafka-streams-spans@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-streams-spans-2.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-streams-spans-2.1.0/kafka-streams-spans@2.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-streams-spans-2.6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-streams-spans-2.6.0/kafka-streams-spans@2.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/kafka-streams-spans-3.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.kafka-streams-spans-3.2.0/kafka-streams-spans@3.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/lettuce-4.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.lettuce-4.3/lettuce@4.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/lettuce-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.lettuce-5.0/lettuce@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/lettuce-6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.lettuce-6.0/lettuce@6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/logback-classic-1.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.logback-classic-1.2/logback-classic@1.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-3.1/mongodb@3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-3.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-3.7/mongodb@3.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.10-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.10/mongodb-async@3.10-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.11/mongodb-async@3.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.4/mongodb-async@3.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.6/mongodb-async@3.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.7/mongodb-async@3.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-3.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-3.8/mongodb-async@3.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-async-4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-async-4.0/mongodb-async@4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-reactive-streams-4.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-reactive-streams-4.2/mongodb-reactive-streams@4.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mongodb-reactive-streams-4.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mongodb-reactive-streams-4.8/mongodb-reactive-streams@4.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/monix-2.13_3.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.monix-2.13_3.4.0/monix@2.13_3.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mule-3.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mule-3.6/mule@3.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mule-3.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mule-3.7/mule@3.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mule-base-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mule-base/mule-base@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mule-ei1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mule-ei1/mule-ei1@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/mule-ei2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.mule-ei2/mule-ei2@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-3.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-3.4/netty@3.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-3.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-3.8/netty@3.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-4.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-4.0.0/netty@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-4.0.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-4.0.8/netty@4.0.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-reactor-0.7.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-reactor-0.7.0/netty-reactor@0.7.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-reactor-0.8.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-reactor-0.8.0/netty-reactor@0.8.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/netty-reactor-0.9.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.netty-reactor-0.9.0/netty-reactor@0.9.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/newrelic-cats-effect3-api-1.0.jar": "pkg:maven/com.newrelic.instrumentation.newrelic-cats-effect3-api/newrelic-cats-effect3-api@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/newrelic-scala-cats-api-1.0.jar": "pkg:maven/com.newrelic.instrumentation.newrelic-scala-cats-api/newrelic-scala-cats-api@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/newrelic-scala-monix-api-1.0.jar": "pkg:maven/com.newrelic.instrumentation.scala-monix-api/newrelic-scala-monix-api@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/newrelic-scala-zio-api-1.0.jar": "pkg:maven/com.newrelic.instrumentation.newrelic-scala-zio-api/newrelic-scala-zio-api@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/ning-async-http-client-1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.ning-async-http-client-1.0/ning-async-http-client@1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/ning-async-http-client-1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.ning-async-http-client-1.1/ning-async-http-client@1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/ning-async-http-client-1.6.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.ning-async-http-client-1.6.1/ning-async-http-client@1.6.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/okhttp-3.14.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@3.14.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/okhttp-3.6.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@3.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/okhttp-4.0.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/okhttp-4.4.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@4.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/open-liberty-jakarta-21.0.0.12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.open-liberty-jakarta-21.0.0.12/open-liberty-jakarta@21.0.0.12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/openejb-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.openejb-3.0/openejb@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/openjpa-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.openjpa-1.0.0/openjpa@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/oracle-r2dbc-1.0.jar": "pkg:maven/com.newrelic.instrumentation.oracle-r2dbc/oracle-r2dbc@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.3/play@2.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.4/play@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.5/play@2.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.6/play@2.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.6.13-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.6.13/play@2.6.13-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.7/play@2.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-2.8.16-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-2.8.16/play@2.8.16-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-shaded-async-http-client-1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-shaded-async-http-client-1.0.0/play-shaded-async-http-client@1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-ws-2.13_2.6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-ws-2.13_2.6.0/play-ws@2.13_2.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/play-ws-2.6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.play-ws-2.6.0/play-ws@2.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/quartz-1.8.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.quartz-1.8.3/quartz@1.8.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/quartz-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.quartz-2.0.0/quartz@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-h2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-h2/r2dbc-h2@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-mariadb-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-mariadb/r2dbc-mariadb@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-mssql-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-mssql/r2dbc-mssql@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-mysql-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-mysql/r2dbc-mysql@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-postgresql-0.9.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-postgresql-0.9.0/r2dbc-postgresql@0.9.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/r2dbc-postgresql-0.9.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.r2dbc-postgresql-0.9.2/r2dbc-postgresql@0.9.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/rabbit-amqp-2.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.rabbit-amqp-2.7/rabbit-amqp@2.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/rabbit-amqp-3.5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.rabbit-amqp-3.5.0/rabbit-amqp@3.5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/rabbit-amqp-5.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.rabbit-amqp-5.0.0/rabbit-amqp@5.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/reactor-3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.reactor-3.3.0/reactor@3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/resin-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.resin-3/resin@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/resin-4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.resin-4/resin@4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/resin-jmx-1.0.jar": "pkg:maven/com.newrelic.instrumentation.resin-jmx/resin-jmx@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/resteasy-2.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.resteasy-2.2/resteasy@2.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/resteasy-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.resteasy-3.0/resteasy@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/scala-2.12.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.scala-2.12.0/scala@2.12.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/scala-2.13.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.scala-2.13.0/scala@2.13.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/scala-2.9.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.scala-2.9.3/scala@2.9.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/servlet-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.servlet-2.4/servlet@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/servlet-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.servlet-5.0/servlet@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/servlet-6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.servlet-6.0/servlet@6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/servlet-user-1.0.jar": "pkg:maven/com.newrelic.instrumentation.servlet-user/servlet-user@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/servlet-user-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.servlet-user-5.0/servlet-user@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/slick-2.11_3.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.slick-2.11_3.2.0/slick@2.11_3.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/slick-2.12_3.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.slick-2.12_3.2.0/slick@2.12_3.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/slick-3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.slick-3.0.0/slick@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-4.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-4.0.0/solr@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-5.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-5.0.0/solr@5.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-5.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-5.1.0/solr@5.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-5.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-5.4.0/solr@5.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-6.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-6.4.0/solr@6.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-7.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-7.0.0/solr@7.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-jmx-7.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-jmx-7.0.0/solr-jmx@7.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/solr-jmx-7.4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.solr-jmx-7.4.0/solr-jmx@7.4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spray-can-1.3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spray-can-1.3.1/spray-can@1.3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spray-can-http-client-1.3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spray-can-http-client-1.3.1/spray-can-http-client@1.3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spray-client-1.3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spray-client-1.3.1/spray-client@1.3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spray-http-1.3.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spray-http-1.3.1/spray-http@1.3.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-3.0.0-1.0.jar": "pkg:maven/org.springframework/spring@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-4.0.0-1.0.jar": "pkg:maven/org.springframework/spring@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-4.2.0-1.0.jar": "pkg:maven/org.springframework/spring@4.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-4.3.0-1.0.jar": "pkg:maven/org.springframework/spring@4.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-aop-2-1.0.jar": "pkg:maven/org.springframework/spring-aop@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-cache-3.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spring-cache-3.1.0/spring-cache@3.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-jms-2-1.0.jar": "pkg:maven/org.springframework/spring-jms@2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-jms-3-1.0.jar": "pkg:maven/org.springframework/spring-jms@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-webclient-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.spring-webclient-5.0/spring-webclient@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-webflux-5.0.0-1.0.jar": "pkg:maven/org.springframework/spring-webflux@5.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-webflux-5.1.0-1.0.jar": "pkg:maven/org.springframework/spring-webflux@5.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-webflux-5.3.0-1.0.jar": "pkg:maven/org.springframework/spring-webflux@5.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-webflux-6.0.0-1.0.jar": "pkg:maven/org.springframework/spring-webflux@6.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spring-ws-2.0-1.0.jar": "pkg:maven/org.springframework.ws/spring-ws@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/spymemcached-2.12.0-1.0.jar": "pkg:maven/com.newrelic/spymemcached@2.12.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-2.12_2.2.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-2.12_2.2.3/sttp@2.12_2.2.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-2.13_2.2.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-2.13_2.2.3/sttp@2.13_2.2.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-2.13_3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-2.13_3.0.0/sttp@2.13_3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-akka-2.12_2.1.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-akka-2.12_2.1.5/sttp-akka@2.12_2.1.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-akka-2.13_2.1.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-akka-2.13_2.1.5/sttp-akka@2.13_2.1.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-akka-2.13_3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-akka-2.13_3.0.0/sttp-akka@2.13_3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-http4s-2.12_2.1.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-http4s-2.12_2.1.5/sttp-http4s@2.12_2.1.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-http4s-2.13_2.1.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-http4s-2.13_2.1.5/sttp-http4s@2.13_2.1.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sttp-http4s-2.13_3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sttp-http4s-2.13_3.3.0/sttp-http4s@2.13_3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/sun-net-httpserver-1.0.jar": "pkg:maven/com.newrelic.instrumentation.sun-net-httpserver/sun-net-httpserver@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/thrift-0.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.thrift-0.8/thrift@0.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-10-1.0.jar": "pkg:maven/org.apache.tomcat/tomcat@10-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-7-1.0.jar": "pkg:maven/org.apache.tomcat/tomcat@7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-7.0.70-1.0.jar": "pkg:maven/org.apache.tomcat/tomcat@7.0.70-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-8.5.0-1.0.jar": "pkg:maven/org.apache.tomcat/tomcat@8.5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-8.5.2-1.0.jar": "pkg:maven/org.apache.tomcat/tomcat@8.5.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-jmx-1.0.jar": "pkg:maven/com.newrelic.instrumentation.tomcat-jmx/tomcat-jmx@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-request-listener-1.0.jar": "pkg:maven/com.newrelic.instrumentation.tomcat-request-listener/tomcat-request-listener@1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/tomcat-request-listener-10-1.0.jar": "pkg:maven/com.newrelic.instrumentation.tomcat-request-listener-10/tomcat-request-listener@10-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.3.0/vertx-core@3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.3.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.3.3/vertx-core@3.3.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.4.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.4.1/vertx-core@3.4.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.6.0/vertx-core@3.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.8.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.8.0/vertx-core@3.8.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-3.9.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-3.9.0/vertx-core@3.9.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-4.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-4.0.0/vertx-core@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-4.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-4.1.0/vertx-core@4.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-core-4.3.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-core-4.3.2/vertx-core@4.3.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.2.0/vertx-web@3.2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.3.0/vertx-web@3.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.5.0/vertx-web@3.5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.5.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.5.1/vertx-web@3.5.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.5.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.5.2/vertx-web@3.5.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.6.0/vertx-web@3.6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.8.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.8.0/vertx-web@3.8.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/vertx-web-3.8.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.vertx-web-3.8.3/vertx-web@3.8.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/weblogic-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.weblogic-12/weblogic@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/weblogic-12.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.weblogic-12.2/weblogic@12.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/weblogic-jmx-12-1.0.jar": "pkg:maven/com.newrelic.instrumentation.weblogic-jmx-12/weblogic-jmx@12-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/weblogic-jmx-12.2.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.weblogic-jmx-12.2.1/weblogic-jmx@12.2.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/websphere-8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.websphere-8/websphere@8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/websphere-jmx-7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.websphere-jmx-7/websphere-jmx@7-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/websphere-liberty-profile-8.5.5.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.websphere-liberty-profile-8.5.5.5/websphere-liberty-profile@8.5.5.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/websphere-liberty-profile-dispatcher-8.5.5.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.websphere-liberty-profile-dispatcher-8.5.5.5/websphere-liberty-profile-dispatcher@8.5.5.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/websphere-liberty-profile-environment-8.5.5.5-1.0.jar": "pkg:maven/com.newrelic.instrumentation.websphere-liberty-profile-environment-8.5.5.5/websphere-liberty-profile-environment@8.5.5.5-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/wildfly-27-1.0.jar": "pkg:maven/com.newrelic.instrumentation.wildfly-27/wildfly@27-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/wildfly-8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.wildfly-8/wildfly@8-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/wildfly-8-CAT-1.0.jar": "pkg:maven/com.newrelic.instrumentation.wildfly-8-CAT/wildfly@8-CAT-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/wildfly-8-PORT-1.0.jar": "pkg:maven/com.newrelic.instrumentation.wildfly-8-PORT/wildfly@8-PORT-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/wildfly-jmx-14-1.0.jar": "pkg:maven/com.newrelic.instrumentation.wildfly-jmx-14/wildfly-jmx@14-1.0",
"/packages/newrelic-agent-8.8.0.jar:instrumentation/zio-1.0.jar": "pkg:maven/com.newrelic.instrumentation.zio/zio@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-api.jar": "pkg:maven/newrelic-api/newrelic-api@8.8.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/akka-http-core-10.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.akka-http-core-10.0/akka-http-core@10.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/akka-http-core-2.11_10.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.akka-http-core-10.0.11/akka-http-core@2.11_10.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/apache-ldap-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.apache-ldap/apache-ldap@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/apache-log4j-2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.apache-log4j-2.0/apache-log4j@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/apache-log4j-2.17.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.apache-log4j/apache-log4j@2.17.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/apache-log4j-3.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.apache-log4j/apache-log4j@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/async-http-client-2.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.async-http-client-2.0.0/async-http-client@2.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/camel-xpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.camel-xpath/camel-xpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/cassandra-datastax-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.cassandra-datastax-3/cassandra-datastax@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/cassandra-datastax-4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.cassandra-datastax-4/cassandra-datastax@4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/commons-jxpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.commons-jxpath/commons-jxpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-1.11.390-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-1.11.390/dynamodb@1.11.390-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-1.11.453-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-1.11.453/dynamodb@1.11.453-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-1.11.459-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-1.11.459/dynamodb@1.11.459-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-1.11.80-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-1.11.80/dynamodb@1.11.80-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-2.1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-2.1.0/dynamodb@2.1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-2.1.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-2.1.2/dynamodb@2.1.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/dynamodb-2.15.34-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.dynamodb-2.15.34/dynamodb@2.15.34-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/file-operation-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.file-operation/file-operation@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/graalvm-jsinjection-19.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.graalvm-jsinjection-19.0.0/graalvm-jsinjection@19.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/graalvm-jsinjection-22.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.graalvm-jsinjection-22.0.0/graalvm-jsinjection@22.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/http-async-client-4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.http-async-client-4/http-async-client@4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/httpclient-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.httpclient-3/httpclient@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/httpclient-4.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.httpclient-4.0/httpclient@4.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/httpclient-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.httpclient-5.0/httpclient@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/httpclient-jdk11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.httpclient-jdk11/httpclient-jdk11@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/java-io-inputstream-jdk8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.java-io-inputstream-jdk8/java-io-inputstream-jdk8@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/java-io-inputstream-jdk9-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.java-io-inputstream-jdk9/java-io-inputstream-jdk9@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/java-io-stream-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.java-io-stream/java-io-stream@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/java-lang-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.java-lang/java-lang@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/javax-jndi-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.javax-jndi/javax-jndi@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/javax-ldap-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.javax-ldap/javax-ldap@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/javax-xpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.javax-xpath/javax-xpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jax-rs-1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jax-rs-1.0/jax-rs@1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jax-rs-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jax-rs-3.0/jax-rs@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jaxen-xpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jaxen-xpath/jaxen-xpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jaxen-xpath-1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jaxen-xpath-1.1/jaxen-xpath@1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-db2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-db2/jdbc-db2@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-embedded-derby-10.10.1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-embedded-derby-10.10.1.1/jdbc-embedded-derby@10.10.1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-embedded-derby-10.11.1.1-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-embedded-derby-10.11.1.1/jdbc-embedded-derby@10.11.1.1-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-embedded-derby-10.15.1.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-embedded-derby-10.15.1.3/jdbc-embedded-derby@10.15.1.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-embedded-derby-10.2.1.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-embedded-derby-10.2.1.6/jdbc-embedded-derby@10.2.1.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-generic-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-generic/jdbc-generic@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-h2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-h2/jdbc-h2@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-hsqldb-1.7.2.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-hsqldb-1.7.2.2/jdbc-hsqldb@1.7.2.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-hsqldb-2.2.9-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-hsqldb-2.2.9/jdbc-hsqldb@2.2.9-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-inet-merlia-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-inet-merlia/jdbc-inet-merlia@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-inet-oranxo-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-inet-merlia/jdbc-inet-oranxo@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-jtds-generic-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-jtds-generic/jdbc-jtds-generic@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mariadb-1.1.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mariadb-1.1.7/jdbc-mariadb@1.1.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mariadb-1.3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mariadb-1.3.0/jdbc-mariadb@1.3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-3.0.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-3.0.8/jdbc-mysql@3.0.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-6.0.2/jdbc-mysql@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-6.0.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-6.0.4/jdbc-mysql@6.0.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-8.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-8.0.11/jdbc-mysql@8.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-connection-5.1.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-connection-5.1.4/jdbc-mysql-connection@5.1.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-connection-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-connection-6.0.2/jdbc-mysql-connection@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-connection-8.0.11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-mysql-connection-8.0.11/jdbc-mysql-connection@8.0.11-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-multihost-connections-5.1.3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-multihost-connections-5.1.3/jdbc-mysql-multihost-connections@5.1.3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-mysql-multihost-connections-6.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.jdbc-mysql-multihost-connections-6.0.2/jdbc-mysql-multihost-connections@6.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-ojdbc-tns-12.1.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-ojdbc-tns/jdbc-ojdbc-tns@12.1.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-ojdbc-tns-21.1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-ojdbc-tns-21.1.0.0/jdbc-ojdbc-tns@21.1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-ojdbc-tns-21.6.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-ojdbc-tns-21.6.0.0/jdbc-ojdbc-tns@21.6.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-ojdbc7-12.1.0.2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-ojdbc7-12.1.0.2/jdbc-ojdbc7@12.1.0.2-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-ojdbc8-21.1.0.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-ojdbc8-21.1.0.0/jdbc-ojdbc8@21.1.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-postgresql-8.0-312.jdbc3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-postgresql-8.0-312.jdbc3/jdbc-postgresql@8.0-312.jdbc3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-postgresql-9.4.1207-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-postgresql-9.4.1207/jdbc-postgresql@9.4.1207-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-postgresql-9.4.1208-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-postgresql-9.4.1208/jdbc-postgresql@9.4.1208-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-sqlserver-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-sqlserver/jdbc-sqlserver@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jdbc-sybase-6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jdbc-sybase-6/jdbc-sybase@6-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jetty-11-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jetty-11/jetty@11-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jetty-9-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jetty-9/jetty@9-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jsp-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jsp-2.4/jsp@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/jsp-3-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.jsp-3/jsp@3-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/ldaptive-1.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.ldaptive-1.0/ldaptive@1.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/ldaptive-2.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.ldaptive-2.0/ldaptive@2.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/low-priority-instrumentation-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.low-priority-instrumentation/low-priority-instrumentation@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/mongodb-3.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.mongodb-3.0/mongodb@3.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/mongodb-3.6-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.mongodb-3.6/mongodb@3.6-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/mongodb-3.7-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.mongodb-3.7/mongodb@3.7-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/mongodb-3.8-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.mongodb-3.8/mongodb@3.8-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/nashorn-jsinjection-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.nashorn-jsinjection/nashorn-jsinjection@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/okhttp-3.0.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@3.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/okhttp-3.5.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@3.5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/okhttp-4.0.0-1.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@4.0.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-generic-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-generic/r2dbc-generic@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-h2-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-h2/r2dbc-h2@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-mariadb-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-mariadb/r2dbc-mariadb@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-mssql-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-mssql/r2dbc-mssql@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-mysql-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-mysql/r2dbc-mysql@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-oracle-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-oracle/r2dbc-oracle@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/r2dbc-postgresql-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.r2dbc-postgresql/r2dbc-postgresql@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/rhino-jsinjection-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.rhino-jsinjection/rhino-jsinjection@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/saxpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.saxpath/saxpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/servlet-2.4-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.servlet-2.4/servlet@2.4-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/servlet-5.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.servlet-5.0/servlet@5.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/servlet-6.0-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.servlet-6.0/servlet@6.0-1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/spring-web-1.0.jar": "pkg:maven/org.springframework/spring-web@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/sun-net-httpserver-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.sun-net-httpserver/sun-net-httpserver@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/unboundid-ldapsdk-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.unboundid-ldapsdk/unboundid-ldapsdk@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/urlconnection-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.urlconnection/urlconnection@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar:instrumentation-security/xalan-xpath-1.0.jar": "pkg:maven/com.newrelic.instrumentation.security.xalan-xpath/xalan-xpath@1.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar": "pkg:maven/com.newrelic.agent.java.security/newrelic-security-agent@1.0.7-public-preview",
"/packages/newrelic-agent-8.8.0.jar:newrelic-security-api.jar": "pkg:maven/com.newrelic.agent.java.security/newrelic-security-api@1.0.7-public-preview",
"/packages/newrelic-agent-8.8.0.jar:newrelic-weaver-api.jar": "pkg:maven/com.newrelic.agent.java/newrelic-weaver-api@8.8.0",
"/packages/newrelic-agent-8.8.0.jar:newrelic-weaver-scala-api.jar": "pkg:maven/com.newrelic.agent.java/newrelic-weaver-scala-api@8.8.0",
"/packages/newrelic-agent-8.8.0.jar": "pkg:maven/com.newrelic.agent.java/newrelic-agent@8.8.0",
}
// Constructed by:
// syft anchore/test_images:java-1abc58f -o json | jq -r '.artifacts.[] | [.metadata.virtualPath, .purl, ""] | @csv' | grep 'pkg:maven' | sort | uniq >> /tmp/java_artifacts_mapping.txt
// The map was then hand-edited for correctness by comparing to Maven Central.
var expectedPURLs = map[string]string{
"/packages/activemq-client-5.18.2.jar": "pkg:maven/org.apache.activemq/activemq-client@5.18.2",
"/packages/activemq-protobuf-1.1.jar": "pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1",
// "/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
// "/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
"/packages/ant-1.10.3.jar": "pkg:maven/org.apache.ant/ant@1.10.3",
"/packages/apache-chainsaw-2.1.0.jar": "pkg:maven/log4j/apache-chainsaw@2.1.0",
"/packages/apache-log4j-extras-1.1.jar": "pkg:maven/log4j/apache-log4j-extras@1.1",
"/packages/apoc-4.4.0.11.jar": "pkg:maven/org.neo4j.procedure/apoc@4.4.0.11",
"/packages/bc-fips-1.0.2.3.jar": "pkg:maven/org.bouncycastle/bc-fips@1.0.2.3",
"/packages/camel-core-3.1.0.jar": "pkg:maven/org.apache.camel/camel-core@3.1.0",
"/packages/cassandra-all-4.1.1.jar": "pkg:maven/org.apache.cassandra/cassandra-all@4.1.1",
"/packages/commons-logging-1.1.1.jar": "pkg:maven/commons-logging/commons-logging@1.1.1",
"/packages/commons-vfs-1.0.jar": "pkg:maven/commons-vfs/commons-vfs@1.0",
"/packages/cxf-rt-transports-http-2.7.3.jar": "pkg:maven/org.apache.cxf/cxf-rt-transports-http@2.7.3",
"/packages/dubbo-3.1.4.jar:com.alibaba:hessian-lite": "pkg:maven/com.alibaba/hessian-lite@3.2.13",
"/packages/activemq-client-5.18.2.jar": "pkg:maven/org.apache.activemq/activemq-client@5.18.2",
"/packages/activemq-protobuf-1.1.jar": "pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1",
"/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
"/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
"/packages/ant-1.10.3.jar": "pkg:maven/org.apache.ant/ant@1.10.3",
"/packages/apache-chainsaw-2.1.0.jar": "pkg:maven/log4j/apache-chainsaw@2.1.0",
"/packages/apache-log4j-extras-1.1.jar": "pkg:maven/log4j/apache-log4j-extras@1.1",
"/packages/apoc-4.4.0.11.jar": "pkg:maven/org.neo4j.procedure/apoc@4.4.0.11",
"/packages/bc-fips-1.0.2.3.jar": "pkg:maven/org.bouncycastle/bc-fips@1.0.2.3",
"/packages/camel-core-3.1.0.jar": "pkg:maven/org.apache.camel/camel-core@3.1.0",
"/packages/cassandra-all-4.1.1.jar": "pkg:maven/org.apache.cassandra/cassandra-all@4.1.1",
"/packages/commons-logging-1.1.1.jar": "pkg:maven/commons-logging/commons-logging@1.1.1",
"/packages/commons-vfs-1.0.jar": "pkg:maven/commons-vfs/commons-vfs@1.0",
"/packages/cxf-rt-transports-http-2.7.3.jar": "pkg:maven/org.apache.cxf/cxf-rt-transports-http@2.7.3",
"/packages/dubbo-3.1.4.jar:com.alibaba:hessian-lite": "pkg:maven/com.alibaba/hessian-lite@3.2.13",
// "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-auth": "pkg:maven/org.apache.dubbo/dubbo-auth@3.1.4",
// "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-cluster": "pkg:maven/org.apache.dubbo/dubbo-cluster@3.1.4",
// "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-common": "pkg:maven/org.apache.dubbo/dubbo-common@3.1.4",
@@ -0,0 +1 @@
a:5:{s:4:"name";s:9:"memcached";s:4:"date";s:10:"2022-01-11";s:4:"time";s:8:"15:23:47";s:7:"version";a:2:{s:7:"release";s:5:"3.2.0";s:3:"api";s:5:"3.2.0";}s:7:"license";a:2:{s:7:"attribs";a:1:{s:3:"uri";s:26:"http://www.php.net/license";}s:8:"_content";s:11:"PHP License";}}
@@ -1 +1 @@
FROM anchore/test_images:java-1abc58f@sha256:3add9f90e9ed35739cc99b7830767e09eec921052e2412adf4491648c741f066
FROM anchore/test_images:java-6ec7f71@sha256:e68db8ae97cc84b5b58f7bea0c138e00440aea188d74a2f4a2c2f6402e57d3a9
+24 -22
View File
@@ -16,7 +16,7 @@ require (
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b
github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426
github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4
github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
// we are hinting brotli to latest due to warning when installing archiver v3:
@@ -28,24 +28,25 @@ require (
github.com/charmbracelet/lipgloss v0.10.0
github.com/dave/jennifer v1.7.0
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da
github.com/distribution/reference v0.5.0
github.com/docker/docker v25.0.4+incompatible
github.com/distribution/reference v0.6.0
github.com/docker/docker v26.0.1+incompatible
github.com/dustin/go-humanize v1.0.1
github.com/elliotchance/phpserialize v1.4.0
github.com/facebookincubator/nvdtools v0.1.5
github.com/github/go-spdx/v2 v2.2.0
github.com/gkampitakis/go-snaps v0.5.2
github.com/gkampitakis/go-snaps v0.5.3
github.com/go-git/go-billy/v5 v5.5.0
github.com/go-git/go-git/v5 v5.11.0
github.com/go-git/go-git/v5 v5.12.0
github.com/go-test/deep v1.1.0
github.com/google/go-cmp v0.6.0
github.com/google/go-containerregistry v0.19.0
github.com/google/go-containerregistry v0.19.1
github.com/google/licensecheck v0.3.1
github.com/google/uuid v1.6.0
github.com/gookit/color v1.5.4
github.com/hashicorp/go-multierror v1.1.1
github.com/iancoleman/strcase v0.3.0
github.com/invopop/jsonschema v0.7.0
github.com/jedib0t/go-pretty/v6 v6.5.4
github.com/jedib0t/go-pretty/v6 v6.5.8
github.com/jinzhu/copier v0.4.0
github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953
github.com/knqyf263/go-rpmdb v0.1.0
@@ -64,7 +65,7 @@ require (
github.com/sassoftware/go-rpmutils v0.3.0
// pinned to pull in 386 arch fix: https://github.com/scylladb/go-set/commit/cc7b2070d91ebf40d233207b633e28f5bd8f03a5
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e
github.com/sergi/go-diff v1.3.1
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
github.com/spdx/tools-golang v0.5.3
github.com/spf13/afero v1.11.0
github.com/spf13/cobra v1.8.0
@@ -76,10 +77,10 @@ require (
github.com/xeipuuv/gojsonschema v1.2.0
github.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1
go.uber.org/goleak v1.3.0
golang.org/x/mod v0.16.0
golang.org/x/net v0.22.0
golang.org/x/mod v0.17.0
golang.org/x/net v0.24.0
gopkg.in/yaml.v3 v3.0.1
modernc.org/sqlite v1.29.3
modernc.org/sqlite v1.29.7
)
require (
@@ -91,7 +92,7 @@ require (
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/Microsoft/hcsshim v0.11.4 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
github.com/ProtonMail/go-crypto v1.0.0 // indirect
github.com/adrg/xdg v0.4.0 // indirect
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
@@ -135,7 +136,7 @@ require (
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 // indirect
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
@@ -154,12 +155,13 @@ require (
github.com/magiconair/properties v1.8.7 // indirect
github.com/maruel/natural v1.1.1 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.18 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/sys/signal v0.7.0 // indirect
@@ -188,7 +190,7 @@ require (
github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f // indirect
github.com/shopspring/decimal v1.2.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/skeema/knownhosts v1.2.1 // indirect
github.com/skeema/knownhosts v1.2.2 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
@@ -216,24 +218,24 @@ require (
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/term v0.18.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.17.0 // indirect
golang.org/x/tools v0.19.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
modernc.org/libc v1.41.0 // indirect
modernc.org/libc v1.49.3 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/memory v1.7.2 // indirect
modernc.org/memory v1.8.0 // indirect
modernc.org/strutil v1.2.0 // indirect
modernc.org/token v1.1.0 // indirect
)
+60 -46
View File
@@ -77,8 +77,8 @@ github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5
github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=
github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE=
@@ -109,8 +109,8 @@ github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04 h1:VzprUTpc0v
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04/go.mod h1:6dK64g27Qi1qGQZ67gFmBFvEHScy0/C8qhQhNe5B5pQ=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=
github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426 h1:agoiZchSf1Nnnos1azwIg5hk5Ao9TzZNBD9++AChGEg=
github.com/anchore/packageurl-go v0.1.1-0.20240202171727-877e1747d426/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4=
github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4 h1:SjemQ90fgflz39HG+VMkNfrpUVJpcFW6ZFA3TDXqzBM=
github.com/anchore/packageurl-go v0.1.1-0.20240312213626-055233e539b4/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4=
github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84 h1:/E74wU51M87fX5UWHubLZiENXbuAci+xtbSb+JFsIYg=
github.com/anchore/stereoscope v0.0.2-0.20240229175558-fe426d1b1c84/go.mod h1:evQiJMQG56Z7/L5uhA8kfhhjF6ESJUZzUH9ms6bQ2Co=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
@@ -217,14 +217,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8Yc
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da h1:ZOjWpVsFZ06eIhnh4mkaceTiVoktdU67+M7KDHJ268M=
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4imdLi4Asdha1Sc6feLMTfPLXh9IUYmysk=
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/cli v24.0.0+incompatible h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM=
github.com/docker/cli v24.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v25.0.4+incompatible h1:XITZTrq+52tZyZxUOtFIahUf3aH367FLxJzt9vZeAF8=
github.com/docker/docker v25.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v26.0.1+incompatible h1:t39Hm6lpXuXtgkF0dm1t9a5HkbUfdGy6XbWexmGr+hA=
github.com/docker/docker v26.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
@@ -242,6 +242,8 @@ github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/elliotchance/phpserialize v1.4.0 h1:cAp/9+KSnEbUC8oYCE32n2n84BeW8HOY3HMDI8hG2OY=
github.com/elliotchance/phpserialize v1.4.0/go.mod h1:gt7XX9+ETUcLXbtTKEuyrqW3lcLUAeS/AnGZ2e49TZs=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -281,20 +283,20 @@ github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvp
github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
github.com/gkampitakis/go-snaps v0.5.2 h1:ay/6f7WHwRkOgpBec9DjMLRBAApziJommZ21NkOOCwY=
github.com/gkampitakis/go-snaps v0.5.2/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y=
github.com/gkampitakis/go-snaps v0.5.3 h1:2cJnBgHzJhh0Jk5XBIyDYDe1Ylfncoa9r9bVJ5qvOAE=
github.com/gkampitakis/go-snaps v0.5.3/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y=
github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4=
github.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0=
github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=
github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4=
github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys=
github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -372,8 +374,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic=
github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY=
github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=
github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY=
@@ -396,8 +398,8 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -471,8 +473,8 @@ github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy77
github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/5l91s=
github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg=
github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ=
github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E=
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -534,8 +536,8 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw=
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
@@ -569,6 +571,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g=
@@ -692,8 +696,8 @@ github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624
github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
@@ -704,8 +708,8 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ=
github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
@@ -863,8 +867,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -905,8 +909,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -954,8 +958,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1067,15 +1071,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1151,8 +1155,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1310,8 +1314,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1345,18 +1349,28 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
modernc.org/cc/v4 v4.20.0 h1:45Or8mQfbUqJOG9WaxvlFYOAQO0lQ5RvqBcFCXngjxk=
modernc.org/cc/v4 v4.20.0/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
modernc.org/ccgo/v4 v4.16.0 h1:ofwORa6vx2FMm0916/CkZjpFPSR70VwTjUCe2Eg5BnA=
modernc.org/ccgo/v4 v4.16.0/go.mod h1:dkNyWIjFrVIZ68DTo36vHK+6/ShBn4ysU61So6PIqCI=
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk=
modernc.org/libc v1.41.0/go.mod h1:w0eszPsiXoOnoMJgrXjglgLuDy/bt5RR4y3QzUUeodY=
modernc.org/libc v1.49.3 h1:j2MRCRdwJI2ls/sGbeSk0t2bypOG/uvPZUsGQFDulqg=
modernc.org/libc v1.49.3/go.mod h1:yMZuGkn7pXbKfoT/M35gFJOAEdSKdxL0q64sF7KqCDo=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E=
modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E=
modernc.org/sqlite v1.29.3 h1:6L71d3zXVB8oubdVSuwiurNyYRetQ3It8l1FSwylwQ0=
modernc.org/sqlite v1.29.3/go.mod h1:MjUIBKZ+tU/lqjNLbVAAMjsQPdWdA/ciwdhsT9kBwk8=
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
modernc.org/sqlite v1.29.7 h1:Puwf5TIYuOipbcRnpFnLlGlR03DKenw8ggf3ijnuNQ0=
modernc.org/sqlite v1.29.7/go.mod h1:lQPm27iqa4UNZpmr4Aor0MH0HkCLbt1huYDfWylLZFk=
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
+1 -1
View File
@@ -3,5 +3,5 @@ package internal
const (
// JSONSchemaVersion is the current schema version output by the JSON encoder
// This is roughly following the "SchemaVer" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment.
JSONSchemaVersion = "16.0.6"
JSONSchemaVersion = "16.0.7"
)
@@ -1,97 +0,0 @@
package binary
import (
"path"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/syft/artifact"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
"github.com/anchore/syft/syft/sbom"
)
func NewDependencyRelationships(resolver file.Resolver, accessor sbomsync.Accessor) []artifact.Relationship {
// TODO: consider library format (e.g. ELF, Mach-O, PE) for the meantime assume all binaries are homogeneous format
// start with building new file-to-file relationships for executables-to-executables
// you need to make certain that they are unique, store in a map[id]map[id]relationship to avoid dupes.
// before creating the new file-to-file relationship, check to see if there are packages that represent each
// file. If there are, create a package-to-package, file-to-package, or package-to-file relationship as appropriate.
// 1 & 2... build an index of all shared libraries and their owning packages to search against
index := newShareLibIndex(resolver, accessor)
// 3. craft package-to-package or package-to-file relationships that represent binary shared library dependencies
// note: prefer package-to-package relationships over package-to-file relationships
relIndex := newRelationshipIndex()
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
// read all existing dependencyOf relationships
for _, r := range s.Relationships {
if r.Type != artifact.DependencyOfRelationship {
continue
}
relIndex.track(r)
}
})
// find all new relationships to add...
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
for _, parentPkg := range s.Artifacts.Packages.Sorted(pkg.BinaryPkg) {
for _, evidentLocation := range parentPkg.Locations.ToSlice() {
if evidentLocation.Annotations[pkg.EvidenceAnnotationKey] != pkg.PrimaryEvidenceAnnotation {
continue
}
// find all libraries that this package depends on
exec, ok := s.Artifacts.Executables[evidentLocation.Coordinates]
if !ok {
continue
}
for _, libReference := range exec.ImportedLibraries {
// TODO: is this always a basename? technically no, it could be a path...
libBasename := path.Base(libReference)
pkgsThatOwnLib := index.owningLibraryPackage(libBasename)
if pkgsThatOwnLib == nil {
// create package-to-file relationship...
// if there is more than one library for this given library name, then we will include
// all of them as dependencies since we don't know the LD_LIBRARY_PATH order
// TODO: add configuration for LD_LIBRARY_PATH order?
for _, libCoord := range index.owningLibraryLocations(libBasename).ToSlice() {
relIndex.add(
artifact.Relationship{
From: libCoord,
To: parentPkg,
Type: artifact.DependencyOfRelationship,
},
)
}
// don't create a package-to-package relationship for this library... since we can't
continue
}
// create a package-to-package relationship between the binary package and the library package
// if there is more than one library for this given library name, then we will include
// all of them as dependencies since we don't know the LD_LIBRARY_PATH order
for _, pkgThatOwnsLib := range pkgsThatOwnLib.Sorted() {
relIndex.add(
artifact.Relationship{
From: pkgThatOwnsLib,
To: parentPkg,
Type: artifact.DependencyOfRelationship,
},
)
}
}
}
}
})
// so far this handles the first order dependencies from the binary package. Odds are that the OS package manager
// will have already created a package-to-package relationship for the lib packages to other lib packages.
return relIndex.newRelationships()
}
@@ -1,58 +0,0 @@
package binary
import (
"github.com/scylladb/go-set/strset"
"github.com/anchore/syft/syft/artifact"
)
type relationshipIndex struct {
typesByFromTo map[artifact.ID]map[artifact.ID]*strset.Set
additional []artifact.Relationship
}
func newRelationshipIndex(existing ...artifact.Relationship) *relationshipIndex {
r := &relationshipIndex{
typesByFromTo: make(map[artifact.ID]map[artifact.ID]*strset.Set),
additional: make([]artifact.Relationship, 0),
}
for _, rel := range existing {
r.track(rel)
}
return r
}
// track this relationship as "exists" in the index (this is used to prevent duplicate relationships from being added).
// returns true if the relationship is new to the index, false otherwise.
func (i *relationshipIndex) track(r artifact.Relationship) bool {
fromID := r.From.ID()
if _, ok := i.typesByFromTo[fromID]; !ok {
i.typesByFromTo[fromID] = make(map[artifact.ID]*strset.Set)
}
toID := r.To.ID()
if _, ok := i.typesByFromTo[fromID][toID]; !ok {
i.typesByFromTo[fromID][toID] = strset.New()
}
var exists bool
if i.typesByFromTo[fromID][toID].Has(string(r.Type)) {
exists = true
}
i.typesByFromTo[fromID][toID].Add(string(r.Type))
return exists
}
// add a new relationship to the index, returning true if the relationship is new to the index, false otherwise (thus is a duplicate).
func (i *relationshipIndex) add(r artifact.Relationship) bool {
if !i.track(r) {
i.additional = append(i.additional, r)
return true
}
return false
}
func (i *relationshipIndex) newRelationships() []artifact.Relationship {
return i.additional
}
@@ -1,117 +0,0 @@
package binary
import (
"path"
"github.com/anchore/syft/internal/log"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
"github.com/anchore/syft/syft/sbom"
)
type sharedLibraryIndex struct {
libLocationsByBasename map[string]file.CoordinateSet
allLibLocations file.CoordinateSet
packagesByLibraryPath map[file.Coordinates]*pkg.Collection
}
func newShareLibIndex(resolver file.Resolver, accessor sbomsync.Accessor) *sharedLibraryIndex {
s := &sharedLibraryIndex{
libLocationsByBasename: make(map[string]file.CoordinateSet),
allLibLocations: file.NewCoordinateSet(),
packagesByLibraryPath: make(map[file.Coordinates]*pkg.Collection),
}
s.build(resolver, accessor)
return s
}
func (i *sharedLibraryIndex) build(resolver file.Resolver, accessor sbomsync.Accessor) {
// 1. map out all locations that provide libraries (indexed by the basename)
i.libLocationsByBasename, i.allLibLocations = locationsThatProvideLibraries(accessor)
// 2. for each library path, find all packages that claim ownership of the library
i.packagesByLibraryPath = packagesWithLibraryOwnership(resolver, accessor, i.allLibLocations)
}
func (i *sharedLibraryIndex) owningLibraryLocations(libraryBasename string) file.CoordinateSet {
if set, ok := i.libLocationsByBasename[libraryBasename]; ok {
return set
}
return file.NewCoordinateSet()
}
func (i *sharedLibraryIndex) owningLibraryPackage(libraryBasename string) *pkg.Collection {
// find all packages that own a library by it's basename
if set, ok := i.libLocationsByBasename[libraryBasename]; ok {
for _, coord := range set.ToSlice() {
if pkgSet, ok := i.packagesByLibraryPath[coord]; ok {
return pkgSet
}
}
}
return nil
}
func locationsThatProvideLibraries(accessor sbomsync.Accessor) (map[string]file.CoordinateSet, file.CoordinateSet) {
// map out all locations that provide libraries (indexed by the basename)
libLocationsByBasename := make(map[string]file.CoordinateSet)
allLibLocations := file.NewCoordinateSet()
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
for coord, f := range s.Artifacts.Executables {
if !f.HasExports {
continue
}
basename := path.Base(coord.RealPath)
set := libLocationsByBasename[basename]
set.Add(coord)
allLibLocations.Add(coord)
libLocationsByBasename[basename] = set
}
})
return libLocationsByBasename, allLibLocations
}
func packagesWithLibraryOwnership(resolver file.Resolver, accessor sbomsync.Accessor, allLibLocations file.CoordinateSet) map[file.Coordinates]*pkg.Collection {
// map out all packages that claim ownership of a library at a specific path
packagesByLibraryPath := make(map[file.Coordinates]*pkg.Collection)
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
for _, p := range s.Artifacts.Packages.Sorted() {
fileOwner, ok := p.Metadata.(pkg.FileOwner)
if !ok {
continue
}
for _, pth := range fileOwner.OwnedFiles() {
ownedLocation, err := resolver.FilesByPath(pth)
if err != nil {
log.WithFields("error", err, "path", pth).Trace("unable to find path for owned file")
continue
}
for _, loc := range ownedLocation {
// if the location is a library, add the package to the set of packages that own the library
if !allLibLocations.Contains(loc.Coordinates) {
continue
}
if _, ok := packagesByLibraryPath[loc.Coordinates]; !ok {
packagesByLibraryPath[loc.Coordinates] = pkg.NewCollection()
}
// we have a library path, add the package to the set of packages that own the library
packagesByLibraryPath[loc.Coordinates].Add(p)
}
}
}
})
return packagesByLibraryPath
}
+1 -12
View File
@@ -1,20 +1,15 @@
package relationship
import (
"github.com/anchore/syft/internal/relationship/binary"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/syft/artifact"
"github.com/anchore/syft/syft/cataloging"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/sbom"
)
func Finalize(resolver file.Resolver, builder sbomsync.Builder, cfg cataloging.RelationshipsConfig, src artifact.Identifiable) {
func Finalize(builder sbomsync.Builder, cfg cataloging.RelationshipsConfig, src artifact.Identifiable) {
accessor := builder.(sbomsync.Accessor)
// remove ELF packages that are already represented by a non-ELF package
// TODO (also, how should we update the TUI to reflect that we removed packages?)
// add relationships showing packages that are evident by a file which is owned by another package (package-to-package)
if cfg.PackageFileOwnershipOverlap {
byFileOwnershipOverlapWorker(accessor)
@@ -26,12 +21,6 @@ func Finalize(resolver file.Resolver, builder sbomsync.Builder, cfg cataloging.R
excludeBinariesByFileOwnershipOverlap(accessor)
}
// add the new relationships for executables to the SBOM
newBinaryRelationships := binary.NewDependencyRelationships(resolver, accessor)
accessor.WriteToSBOM(func(s *sbom.SBOM) {
s.Relationships = append(s.Relationships, newBinaryRelationships...)
})
// add source "contains package" relationship (source-to-package)
var sourceRelationships []artifact.Relationship
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
+1
View File
@@ -80,6 +80,7 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "javascript", "node", "npm",
),
newSimplePackageTaskFactory(php.NewComposerLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "php", "composer"),
newSimplePackageTaskFactory(php.NewPeclCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, pkgcataloging.ImageTag, "php", "pecl"),
newPackageTaskFactory(
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return python.NewPackageCataloger(cfg.PackagesConfig.Python)
+1 -2
View File
@@ -22,9 +22,8 @@ func (s sourceIdentifierAdapter) ID() artifact.ID {
}
func NewRelationshipsTask(cfg cataloging.RelationshipsConfig, src source.Description) Task {
fn := func(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {
fn := func(_ context.Context, _ file.Resolver, builder sbomsync.Builder) error {
relationship.Finalize(
resolver,
builder,
cfg,
&sourceIdentifierAdapter{desc: src})
File diff suppressed because it is too large Load Diff
+25 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "anchore.io/schema/syft/json/16.0.6/document",
"$id": "anchore.io/schema/syft/json/16.0.7/document",
"$ref": "#/$defs/Document",
"$defs": {
"AlpmDbEntry": {
@@ -1496,6 +1496,9 @@
{
"$ref": "#/$defs/PhpComposerLockEntry"
},
{
"$ref": "#/$defs/PhpPeclEntry"
},
{
"$ref": "#/$defs/PortageDbEntry"
},
@@ -1779,6 +1782,27 @@
"dist"
]
},
"PhpPeclEntry": {
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"license": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object",
"required": [
"name",
"version"
]
},
"PortageDbEntry": {
"properties": {
"installedSize": {
+3
View File
@@ -57,6 +57,9 @@ func machoHasEntrypoint(f *macho.File) bool {
}
func machoHasExports(f *macho.File) bool {
if f == nil || f.Symtab == nil {
return false
}
for _, sym := range f.Symtab.Syms {
// look for symbols that are:
// - not private and are external
@@ -69,6 +69,11 @@ func Test_machoHasExports(t *testing.T) {
fixture: "bin/hello_mac",
want: false,
},
{
name: "gcc-amd64-darwin-exec-debug",
fixture: "bin/gcc-amd64-darwin-exec-debug",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@@ -1,10 +1,13 @@
# invoke all make files in subdirectories
.PHONY: all hello libhello
all: hello libhello
all: hello libhello ../bin/gcc-amd64-darwin-exec-debug
hello:
$(MAKE) -C hello
libhello:
$(MAKE) -C libhello
../bin/gcc-amd64-darwin-exec-debug:
curl -L -o ../bin/gcc-amd64-darwin-exec-debug https://github.com/golang/tools/raw/9ed98faabadd2cb94de86d5290b1c6942b7c4877/cmd/splitdwarf/internal/macho/testdata/gcc-amd64-darwin-exec-debug
@@ -36,6 +36,8 @@ func SourceInfo(p pkg.Package) string {
answer = "acquired package info from rust cargo manifest"
case pkg.PhpComposerPkg:
answer = "acquired package info from PHP composer manifest"
case pkg.PhpPeclPkg:
answer = "acquired package info from PHP Pecl manifest"
case pkg.CocoapodsPkg:
answer = "acquired package info from installed cocoapods manifest file"
case pkg.ConanPkg:
@@ -127,6 +127,14 @@ func Test_SourceInfo(t *testing.T) {
"from PHP composer manifest",
},
},
{
input: pkg.Package{
Type: pkg.PhpPeclPkg,
},
expected: []string{
"from PHP Pecl manifest",
},
},
{
input: pkg.Package{
Type: pkg.DartPubPkg,
@@ -35,6 +35,7 @@ func AllTypes() []any {
pkg.NpmPackageLockEntry{},
pkg.PhpComposerInstalledEntry{},
pkg.PhpComposerLockEntry{},
pkg.PhpPeclEntry{},
pkg.PortageEntry{},
pkg.PythonPackage{},
pkg.PythonPipfileLockEntry{},
+1
View File
@@ -91,6 +91,7 @@ var jsonTypes = makeJSONTypes(
jsonNames(pkg.YarnLockEntry{}, "javascript-yarn-lock-entry", "YarnLockJsonMetadata"),
jsonNames(pkg.PhpComposerLockEntry{}, "php-composer-lock-entry", "PhpComposerJsonMetadata"),
jsonNamesWithoutLookup(pkg.PhpComposerInstalledEntry{}, "php-composer-installed-entry", "PhpComposerJsonMetadata"), // the legacy value is split into two types, where the other is preferred
jsonNames(pkg.PhpPeclEntry{}, "php-pecl-entry", "PhpPeclMetadata"),
jsonNames(pkg.PortageEntry{}, "portage-db-entry", "PortageMetadata"),
jsonNames(pkg.PythonPackage{}, "python-package", "PythonPackageMetadata"),
jsonNames(pkg.PythonPipfileLockEntry{}, "python-pipfile-lock-entry", "PythonPipfileLockMetadata"),
@@ -200,6 +200,11 @@ func TestReflectTypeFromJSONName_LegacyValues(t *testing.T) {
input: "PythonRequirementsMetadata",
expected: reflect.TypeOf(pkg.PythonRequirementsEntry{}),
},
{
name: "map pkg.PhpPeclEntry struct type",
input: "PhpPeclMetadata",
expected: reflect.TypeOf(pkg.PhpPeclEntry{}),
},
{
name: "map pkg.ErlangRebarLockEntry struct type",
input: "RebarLockMetadataType",
@@ -414,6 +419,12 @@ func Test_JSONName_JSONLegacyName(t *testing.T) {
expectedJSONName: "php-composer-installed-entry",
expectedLegacyName: "PhpComposerJsonMetadata", // note: maps to multiple entries (v11-12 breaking change)
},
{
name: "PhpPeclMetadata",
metadata: pkg.PhpPeclEntry{},
expectedJSONName: "php-pecl-entry",
expectedLegacyName: "PhpPeclMetadata",
},
{
name: "PortageMetadata",
metadata: pkg.PortageEntry{},
+1 -1
View File
@@ -80,7 +80,7 @@ func Test_PackageURL(t *testing.T) {
ID: "alpine",
VersionID: "3.4.6",
},
expected: "pkg:apk/alpine/g++@v84?arch=am86&distro=alpine-3.4.6",
expected: "pkg:apk/alpine/g%2B%2B@v84?arch=am86&distro=alpine-3.4.6",
},
{
metadata: parsedData{
+21
View File
@@ -153,6 +153,27 @@ func FileContentsVersionMatcher(pattern string) EvidenceMatcher {
}
}
// matchExcluding tests the provided regular expressions against the file, and if matched, DOES NOT return
// anything that the matcher would otherwise return
func matchExcluding(matcher EvidenceMatcher, contentPatternsToExclude ...string) EvidenceMatcher {
var nonMatchPatterns []*regexp.Regexp
for _, p := range contentPatternsToExclude {
nonMatchPatterns = append(nonMatchPatterns, regexp.MustCompile(p))
}
return func(resolver file.Resolver, classifier Classifier, location file.Location) ([]pkg.Package, error) {
contents, err := getContents(resolver, location)
if err != nil {
return nil, fmt.Errorf("unable to get read contents for file: %w", err)
}
for _, nonMatch := range nonMatchPatterns {
if nonMatch.Match(contents) {
return nil, nil
}
}
return matcher(resolver, classifier, location)
}
}
//nolint:gocognit
func sharedLibraryLookup(sharedLibraryPattern string, sharedLibraryMatcher EvidenceMatcher) EvidenceMatcher {
pat := regexp.MustCompile(sharedLibraryPattern)
@@ -608,10 +608,10 @@ func Test_Cataloger_PositiveCases(t *testing.T) {
{
logicalFixture: "java-jre-openjdk/1.8.0_352-b08/linux-amd64",
expected: pkg.Package{
Name: "java",
Name: "java/jre",
Version: "1.8.0_352-b08",
Type: "binary",
PURL: "pkg:generic/java@1.8.0_352-b08",
PURL: "pkg:generic/java/jre@1.8.0_352-b08",
Locations: locations("java"),
Metadata: metadata("java-binary-openjdk", "java"),
},
@@ -619,23 +619,56 @@ func Test_Cataloger_PositiveCases(t *testing.T) {
{
logicalFixture: "java-jre-openjdk/11.0.17/linux-amd64",
expected: pkg.Package{
Name: "java",
Name: "java/jre",
Version: "11.0.17+8-LTS",
Type: "binary",
PURL: "pkg:generic/java@11.0.17+8-LTS",
PURL: "pkg:generic/java/jre@11.0.17%2B8-LTS",
Locations: locations("java"),
Metadata: metadata("java-binary-openjdk", "java"),
},
},
{
logicalFixture: "java-jre-openjdk-eclipse/11.0.22/linux-amd64",
expected: pkg.Package{
Name: "java/jre",
Version: "11.0.22+7",
Type: "binary",
PURL: "pkg:generic/java/jre@11.0.22%2B7",
Locations: locations("java"),
Metadata: metadata("java-binary-openjdk", "java"),
},
},
{
logicalFixture: "java-jre-openjdk-arm64-eclipse/11.0.22/linux-arm64",
expected: pkg.Package{
Name: "java/jre",
Version: "11.0.22+7",
Type: "binary",
PURL: "pkg:generic/java/jre@11.0.22%2B7",
Locations: locations("java"),
Metadata: metadata("java-binary-openjdk", "java"),
},
},
{
logicalFixture: "java-graal-openjdk/17.0.3+7-jvmci-22.1-b06/linux-amd64",
expected: pkg.Package{
Name: "java/graalvm",
Version: "17.0.3+7-jvmci-22.1-b06",
Type: "binary",
PURL: "pkg:generic/java/graalvm@17.0.3%2B7-jvmci-22.1-b06",
Locations: locations("java"),
Metadata: metadata("java-binary-graalvm", "java"),
},
},
{
// TODO: find original binary...
// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo
logicalFixture: "java-jre-oracle/19.0.1/linux-amd64",
expected: pkg.Package{
Name: "java",
Name: "java/jre",
Version: "19.0.1+10-21",
Type: "binary",
PURL: "pkg:generic/java@19.0.1+10-21",
PURL: "pkg:generic/java/jre@19.0.1%2B10-21",
Locations: locations("java"),
Metadata: metadata("java-binary-oracle", "java"),
},
@@ -645,10 +678,10 @@ func Test_Cataloger_PositiveCases(t *testing.T) {
// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo
logicalFixture: "java-jre-oracle/19.0.1/darwin",
expected: pkg.Package{
Name: "java",
Name: "java/jre",
Version: "19.0.1+10-21",
Type: "binary",
PURL: "pkg:generic/java@19.0.1+10-21",
PURL: "pkg:generic/java/jre@19.0.1%2B10-21",
Locations: locations("java"),
Metadata: metadata("java-binary-oracle", "java"),
},
@@ -656,14 +689,25 @@ func Test_Cataloger_PositiveCases(t *testing.T) {
{
logicalFixture: "java-jre-ibm/1.8.0_391/linux-amd64",
expected: pkg.Package{
Name: "java",
Name: "java/jre",
Version: "1.8.0-foreman_2023_10_12_13_27-b00",
Type: "binary",
PURL: "pkg:generic/java@1.8.0-foreman_2023_10_12_13_27-b00",
PURL: "pkg:generic/java/jre@1.8.0-foreman_2023_10_12_13_27-b00",
Locations: locations("java"),
Metadata: metadata("java-binary-ibm", "java"),
},
},
{
logicalFixture: "java-jdk-openjdk/21.0.2+13-LTS/linux-amd64",
expected: pkg.Package{
Name: "java/jdk",
Version: "21.0.2+13-LTS",
Type: "binary",
PURL: "pkg:generic/java/jdk@21.0.2%2B13-LTS",
Locations: locations("jdb"),
Metadata: metadata("java-binary-jdk", "java"),
},
},
{
logicalFixture: "rust-libstd/1.50.0/linux-amd64",
expected: pkg.Package{
+44 -13
View File
@@ -87,12 +87,21 @@ func DefaultClassifiers() []Classifier {
{
Class: "java-binary-openjdk",
FileGlob: "**/java",
EvidenceMatcher: FileContentsVersionMatcher(
// [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL]
// [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL]
`(?m)\x00openjdk\x00java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`),
Package: "java",
PURL: mustPURL("pkg:generic/java@version"),
EvidenceMatcher: matchExcluding(
evidenceMatchers(
FileContentsVersionMatcher(
// [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL]
// [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL]
`(?m)\x00openjdk\x00java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`),
FileContentsVersionMatcher(
// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL]
`(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>[0-9]+[^\x00]+)\x00+openjdk\x00java`),
),
// don't match graalvm
"-jvmci-",
),
Package: "java/jre",
PURL: mustPURL("pkg:generic/java/jre@version"),
// TODO the updates might need to be part of the CPE Attributes, like: 1.8.0:update152
CPEs: singleCPE("cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*"),
},
@@ -102,20 +111,42 @@ func DefaultClassifiers() []Classifier {
EvidenceMatcher: FileContentsVersionMatcher(
// [NUL]java[NUL]1.8[NUL][NUL][NUL][NUL]1.8.0-foreman_2022_09_22_15_30-b00[NUL]
`(?m)\x00java\x00(?P<release>[0-9]+[.0-9]+)\x00{4}(?P<version>[0-9]+[-._a-zA-Z0-9]+)\x00`),
Package: "java",
PURL: mustPURL("pkg:generic/java@version"),
Package: "java/jre",
PURL: mustPURL("pkg:generic/java/jre@version"),
CPEs: singleCPE("cpe:2.3:a:ibm:java:*:*:*:*:*:*:*:*"),
},
{
Class: "java-binary-oracle",
FileGlob: "**/java",
EvidenceMatcher: FileContentsVersionMatcher(
// [NUL]19.0.1+10-21[NUL]
`(?m)\x00(?P<version>[0-9]+[.0-9]+[+][-0-9]+)\x00`),
Package: "java",
PURL: mustPURL("pkg:generic/java@version"),
EvidenceMatcher: matchExcluding(
FileContentsVersionMatcher(
// [NUL]19.0.1+10-21[NUL]
`(?m)\x00(?P<version>[0-9]+[.0-9]+[+][-0-9]+)\x00`),
// don't match openjdk
`\x00openjdk\x00`,
),
Package: "java/jre",
PURL: mustPURL("pkg:generic/java/jre@version"),
CPEs: singleCPE("cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*"),
},
{
Class: "java-binary-graalvm",
FileGlob: "**/java",
EvidenceMatcher: FileContentsVersionMatcher(
`(?m)\x00(?P<version>[0-9]+[.0-9]+[.0-9]+\+[0-9]+-jvmci-[0-9]+[.0-9]+-b[0-9]+)\x00`),
Package: "java/graalvm",
PURL: mustPURL("pkg:generic/java/graalvm@version"),
CPEs: singleCPE("cpe:2.3:a:oracle:graalvm:*:*:*:*:*:*:*:*"),
},
{
Class: "java-binary-jdk",
FileGlob: "**/jdb",
EvidenceMatcher: FileContentsVersionMatcher(
`(?m)\x00(?P<version>[0-9]+\.[0-9]+\.[0-9]+(\+[0-9]+)?([-._a-zA-Z0-9]+)?)\x00`),
Package: "java/jdk",
PURL: mustPURL("pkg:generic/java/jdk@version"),
CPEs: singleCPE("cpe:2.3:a:oracle:jdk:*:*:*:*:*:*:*:*"),
},
{
Class: "nodejs-binary",
FileGlob: "**/node",
@@ -203,6 +203,39 @@ from-images:
paths:
- /usr/lib/jvm/java-11-amazon-corretto/bin/java
- name: java-jre-openjdk-eclipse
version: 11.0.22
images:
- ref: eclipse-temurin:11.0.22_7-jre@sha256:137960b9ec016cddeb366b7137546d37207d0f284f9492c23abf16a9c171dd51
platform: linux/amd64
paths:
- /opt/java/openjdk/bin/java
- name: java-jre-openjdk-arm64-eclipse
version: 11.0.22
images:
- ref: eclipse-temurin:11.0.22_7-jre@sha256:9bb82e8801e12e5377222fde83b5c91d87dc16f76c89e9f8affa678208f56797
platform: linux/arm64
paths:
- /opt/java/openjdk/bin/java
- name: java-graal-openjdk
version: 17.0.3+7-jvmci-22.1-b06
images:
- ref: springci/graalvm-ce:java17-0.12.x@sha256:110bf78b81e4e29c9217b565f10a1f11bb2ec0486d7336c047d803428e09685d
platform: linux/amd64
paths:
- /opt/java/bin/java
- name: java-jdk-openjdk
version: 21.0.2+13-LTS
images:
- ref: eclipse-temurin:21.0.2_13-jdk-alpine@sha256:b5d37df8ee5bb964bb340acca83957f9a09291d07768fba1881f6bfc8048e4f5
platform: linux/amd64
paths:
- opt/java/openjdk/bin/jdb
# TODO: this is not the original binary used in the test fixture
# - version: 5.12.5
# images:
@@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"path/filepath"
"strings"
"github.com/google/uuid"
@@ -147,7 +148,7 @@ func copyBinariesFromDockerImages(config config.BinaryFromImage, destination str
}
func copyBinariesFromDockerImage(config config.BinaryFromImage, destination string, image config.Image) (err error) {
containerName := fmt.Sprintf("%s-%s-%s", config.Name(), config.Version, uuid.New().String())
containerName := fmt.Sprintf("%s-%s-%s", config.Name(), strings.ReplaceAll(config.Version, "+", "-"), uuid.New().String())
cmd := exec.Command("docker", "create", "--name", containerName, image.Reference)
if err = cmd.Run(); err != nil {
+21 -11
View File
@@ -151,7 +151,10 @@ func (c *goBinaryCataloger) makeGoMainPackage(resolver file.Resolver, mod *exten
return main
}
var semverPattern = regexp.MustCompile(`\x00(?P<version>v?(\d+\.\d+\.\d+[-\w]*[+\w]*))\x00`)
// this is checking for (.L)? because at least one binary seems to have \xA0L preceding the version string, but for some reason
// this is unable to be matched by the regex here as \x00\xA0L;
// the only thing that seems to work is to just look for version strings following both \x00 and \x00.L for now
var semverPattern = regexp.MustCompile(`\x00(.L)?(?P<version>v?(\d+\.\d+\.\d+[-\w]*[+\w]*))\x00`)
func (c *goBinaryCataloger) findMainModuleVersion(metadata *pkg.GolangBinaryBuildinfoEntry, gbs pkg.KeyValues, reader io.ReadSeekCloser) string {
vcsVersion, hasVersion := gbs.Get("vcs.revision")
@@ -179,16 +182,8 @@ func (c *goBinaryCataloger) findMainModuleVersion(metadata *pkg.GolangBinaryBuil
if err != nil {
log.WithFields("error", err).Trace("unable to seek to start of go binary reader")
} else {
contents, err := io.ReadAll(reader)
if err != nil {
log.WithFields("error", err).Trace("unable to read from go binary reader")
} else {
matchMetadata := internal.MatchNamedCaptureGroups(semverPattern, string(contents))
version, ok := matchMetadata["version"]
if ok {
return version
}
if v := extractVersionFromContents(reader); v != "" {
return v
}
}
}
@@ -210,6 +205,21 @@ func (c *goBinaryCataloger) findMainModuleVersion(metadata *pkg.GolangBinaryBuil
return ""
}
func extractVersionFromContents(reader io.Reader) string {
contents, err := io.ReadAll(reader)
if err != nil {
log.WithFields("error", err).Trace("unable to read from go binary reader")
return ""
}
matchMetadata := internal.MatchNamedCaptureGroups(semverPattern, string(contents))
version, ok := matchMetadata["version"]
if ok {
return version
}
return ""
}
func extractVersionFromLDFlags(ldflags string) (majorVersion string, fullVersion string) {
if ldflags == "" {
return "", ""
@@ -2,6 +2,8 @@ package golang
import (
"bufio"
"bytes"
"errors"
"io"
"os"
"os/exec"
@@ -867,7 +869,7 @@ func TestBuildGoPkgInfo(t *testing.T) {
Language: pkg.Go,
Type: pkg.GoModulePkg,
Version: "v1.0.0-somethingelse+incompatible",
PURL: "pkg:golang/github.com/anchore/syft@v1.0.0-somethingelse+incompatible",
PURL: "pkg:golang/github.com/anchore/syft@v1.0.0-somethingelse%2Bincompatible",
Locations: file.NewLocationSet(
file.NewLocationFromCoordinates(
file.Coordinates{
@@ -1090,3 +1092,53 @@ func Test_extractVersionFromLDFlags(t *testing.T) {
})
}
}
func Test_extractVersionFromContents(t *testing.T) {
tests := []struct {
name string
contents io.Reader
want string
}{
{
name: "empty string on error",
contents: &alwaysErrorReader{},
want: "",
},
{
name: "empty string on empty reader",
contents: bytes.NewReader([]byte{}),
want: "",
},
{
name: "null-byte delimited semver",
contents: strings.NewReader("\x001.2.3\x00"),
want: "1.2.3",
},
{
name: "null-byte delimited semver with v prefix",
contents: strings.NewReader("\x00v1.2.3\x00"),
want: "v1.2.3",
},
{
// 01a0bfc8: 0e74 5a3b 0000 a04c 7631 2e39 2e35 0000 .tZ;...Lv1.9.5.. from nginx-ingress-controller
// at /nginx-ingress-controller in registry.k8s.io/ingress-nginx/controller:v1.9.5
// digest: sha256:b3aba22b1da80e7acfc52b115cae1d4c687172cbf2b742d5b502419c25ff340e
// TODO: eventually use something for managing snippets, similar to what's used with binary classifier tests
name: "null byte, then random byte, then L then semver",
contents: strings.NewReader("\x0e\x74\x5a\x3b\x00\x00\xa0\x4cv1.9.5\x00\x00"),
want: "v1.9.5",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := extractVersionFromContents(tt.contents)
assert.Equal(t, tt.want, got)
})
}
}
type alwaysErrorReader struct{}
func (alwaysErrorReader) Read(_ []byte) (int, error) {
return 0, errors.New("read from always error reader")
}
@@ -351,6 +351,12 @@ var defaultCandidateAdditions = buildCandidateLookup(
candidateKey{PkgName: "node"},
candidateAddition{AdditionalProducts: []string{"nodejs", "node.js"}},
},
// Conan packages
{
pkg.ConanPkg,
candidateKey{PkgName: "poco"},
candidateAddition{AdditionalVendors: []string{"pocoproject"}},
},
})
var defaultCandidateRemovals = buildCandidateRemovalLookup(
@@ -692,7 +692,6 @@
"mockserve": "cpe:2.3:a:mockserve_project:mockserve:*:*:*:*:*:node.js:*:*",
"moment": "cpe:2.3:a:momentjs:moment:*:*:*:*:*:node.js:*:*",
"mongodb-instance": "cpe:2.3:a:mongodb-instance_project:mongodb-instance:*:*:*:*:*:node.js:*:*",
"mongoose": "cpe:2.3:a:mongoosejs:mongoose:*:*:*:*:*:node.js:*:*",
"mongose": "cpe:2.3:a:mongose_project:mongose:*:*:*:*:*:node.js:*:*",
"monorepo-build": "cpe:2.3:a:monorepo-build_project:monorepo-build:*:*:*:*:*:node.js:*:*",
"mootools": "cpe:2.3:a:mootools_project:mootools:*:*:*:*:*:node.js:*:*",
+13 -3
View File
@@ -230,16 +230,26 @@ func cleanDescription(original *string) (cleaned string) {
// resolveProperty emulates some maven property resolution logic by looking in the project's variables
// as well as supporting the project expressions like ${project.parent.groupId}.
// If no match is found, the entire expression including ${} is returned
//
//nolint:gocognit
func resolveProperty(pom gopom.Project, property *string, propertyName string) string {
propertyCase := safeString(property)
log.WithFields("existingPropertyValue", propertyCase, "propertyName", propertyName).Trace("resolving property")
seenBeforePropertyNames := map[string]struct{}{
propertyName: {},
}
return recursiveResolveProperty(pom, propertyCase, seenBeforePropertyNames)
}
//nolint:gocognit
func recursiveResolveProperty(pom gopom.Project, propertyCase string, seenPropertyNames map[string]struct{}) string {
return propertyMatcher.ReplaceAllStringFunc(propertyCase, func(match string) string {
propertyName := strings.TrimSpace(match[2 : len(match)-1]) // remove leading ${ and trailing }
if _, seen := seenPropertyNames[propertyName]; seen {
return propertyCase
}
entries := pomProperties(pom)
if value, ok := entries[propertyName]; ok {
return value
seenPropertyNames[propertyName] = struct{}{}
return recursiveResolveProperty(pom, value, seenPropertyNames) // recursively resolve in case a variable points to a variable.
}
// if we don't find anything directly in the pom properties,
@@ -514,6 +514,86 @@ func Test_resolveProperty(t *testing.T) {
},
expected: "${project.parent.groupId}",
},
{
name: "double dereference",
property: "${springboot.version}",
pom: gopom.Project{
Parent: &gopom.Parent{
Version: stringPointer("1.2.3"),
},
Properties: &gopom.Properties{
Entries: map[string]string{
"springboot.version": "${project.parent.version}",
},
},
},
expected: "1.2.3",
},
{
name: "map missing stops double dereference",
property: "${springboot.version}",
pom: gopom.Project{
Parent: &gopom.Parent{
Version: stringPointer("1.2.3"),
},
},
expected: "${springboot.version}",
},
{
name: "resolution halts even if it resolves to a variable",
property: "${springboot.version}",
pom: gopom.Project{
Parent: &gopom.Parent{
Version: stringPointer("${undefined.version}"),
},
Properties: &gopom.Properties{
Entries: map[string]string{
"springboot.version": "${project.parent.version}",
},
},
},
expected: "${undefined.version}",
},
{
name: "resolution halts even if cyclic",
property: "${springboot.version}",
pom: gopom.Project{
Properties: &gopom.Properties{
Entries: map[string]string{
"springboot.version": "${springboot.version}",
},
},
},
expected: "${springboot.version}",
},
{
name: "resolution halts even if cyclic more steps",
property: "${cyclic.version}",
pom: gopom.Project{
Properties: &gopom.Properties{
Entries: map[string]string{
"other.version": "${cyclic.version}",
"springboot.version": "${other.version}",
"cyclic.version": "${springboot.version}",
},
},
},
expected: "${cyclic.version}",
},
{
name: "resolution halts even if cyclic involving parent",
property: "${cyclic.version}",
pom: gopom.Project{
Properties: &gopom.Properties{
Entries: map[string]string{
"other.version": "${cyclic.version}",
"springboot.version": "${other.version}",
"cyclic.version": "${springboot.version}",
},
},
},
expected: "${cyclic.version}",
},
}
for _, test := range tests {
+2 -1
View File
@@ -17,8 +17,9 @@ func NewPackageCataloger() pkg.Cataloger {
// NewLockCataloger returns a new cataloger object for NPM (and NPM-adjacent, such as yarn) lock files.
func NewLockCataloger(cfg CatalogerConfig) pkg.Cataloger {
yarnLockAdapter := newGenericYarnLockAdapter(cfg)
packageLockAdapter := newGenericPackageLockAdapter(cfg)
return generic.NewCataloger("javascript-lock-cataloger").
WithParserByGlobs(parsePackageLock, "**/package-lock.json").
WithParserByGlobs(packageLockAdapter.parsePackageLock, "**/package-lock.json").
WithParserByGlobs(yarnLockAdapter.parseYarnLock, "**/yarn.lock").
WithParserByGlobs(parsePnpmLock, "**/pnpm-lock.yaml")
}
+32 -3
View File
@@ -47,7 +47,7 @@ func newPackageJSONPackage(u packageJSON, indexLocation file.Location) pkg.Packa
return p
}
func newPackageLockV1Package(resolver file.Resolver, location file.Location, name string, u lockDependency) pkg.Package {
func newPackageLockV1Package(cfg CatalogerConfig, resolver file.Resolver, location file.Location, name string, u lockDependency) pkg.Package {
version := u.Version
const aliasPrefixPackageLockV1 = "npm:"
@@ -63,12 +63,26 @@ func newPackageLockV1Package(resolver file.Resolver, location file.Location, nam
version = canonicalPackageAndVersion[versionSeparator+1:]
}
var licenseSet pkg.LicenseSet
if cfg.SearchRemoteLicenses {
license, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, version)
if err == nil && license != "" {
licenses := pkg.NewLicensesFromValues(license)
licenseSet = pkg.NewLicenseSet(licenses...)
}
if err != nil {
log.Warnf("unable to extract licenses from javascript yarn.lock for package %s:%s: %+v", name, version, err)
}
}
return finalizeLockPkg(
resolver,
location,
pkg.Package{
Name: name,
Version: version,
Licenses: licenseSet,
Locations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),
PURL: packageURL(name, version),
Language: pkg.JavaScript,
@@ -78,7 +92,22 @@ func newPackageLockV1Package(resolver file.Resolver, location file.Location, nam
)
}
func newPackageLockV2Package(resolver file.Resolver, location file.Location, name string, u lockPackage) pkg.Package {
func newPackageLockV2Package(cfg CatalogerConfig, resolver file.Resolver, location file.Location, name string, u lockPackage) pkg.Package {
var licenseSet pkg.LicenseSet
if u.License != nil {
licenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromLocation(location, u.License...)...)
} else if cfg.SearchRemoteLicenses {
license, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, u.Version)
if err == nil && license != "" {
licenses := pkg.NewLicensesFromValues(license)
licenseSet = pkg.NewLicenseSet(licenses...)
}
if err != nil {
log.Warnf("unable to extract licenses from javascript yarn.lock for package %s:%s: %+v", name, u.Version, err)
}
}
return finalizeLockPkg(
resolver,
location,
@@ -86,7 +115,7 @@ func newPackageLockV2Package(resolver file.Resolver, location file.Location, nam
Name: name,
Version: u.Version,
Locations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),
Licenses: pkg.NewLicenseSet(pkg.NewLicensesFromLocation(location, u.License...)...),
Licenses: licenseSet,
PURL: packageURL(name, u.Version),
Language: pkg.JavaScript,
Type: pkg.NpmPkg,
@@ -15,9 +15,6 @@ import (
"github.com/anchore/syft/syft/pkg/cataloger/generic"
)
// integrity check
var _ generic.Parser = parsePackageLock
// packageLock represents a JavaScript package.lock json file
type packageLock struct {
Requires bool `json:"requires"`
@@ -44,8 +41,18 @@ type lockPackage struct {
// packageLockLicense
type packageLockLicense []string
type genericPackageLockAdapter struct {
cfg CatalogerConfig
}
func newGenericPackageLockAdapter(cfg CatalogerConfig) genericPackageLockAdapter {
return genericPackageLockAdapter{
cfg: cfg,
}
}
// parsePackageLock parses a package-lock.json and returns the discovered JavaScript packages.
func parsePackageLock(_ context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {
func (a genericPackageLockAdapter) parsePackageLock(_ context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {
// in the case we find package-lock.json files in the node_modules directories, skip those
// as the whole purpose of the lock file is for the specific dependencies of the root project
if pathContainsNodeModulesDirectory(reader.Path()) {
@@ -66,7 +73,7 @@ func parsePackageLock(_ context.Context, resolver file.Resolver, _ *generic.Envi
if lock.LockfileVersion == 1 {
for name, pkgMeta := range lock.Dependencies {
pkgs = append(pkgs, newPackageLockV1Package(resolver, reader.Location, name, pkgMeta))
pkgs = append(pkgs, newPackageLockV1Package(a.cfg, resolver, reader.Location, name, pkgMeta))
}
}
@@ -86,7 +93,7 @@ func parsePackageLock(_ context.Context, resolver file.Resolver, _ *generic.Envi
pkgs = append(
pkgs,
newPackageLockV2Package(resolver, reader.Location, getNameFromPath(name), pkgMeta),
newPackageLockV2Package(a.cfg, resolver, reader.Location, getNameFromPath(name), pkgMeta),
)
}
}
@@ -106,7 +106,8 @@ func TestParsePackageLock(t *testing.T) {
expectedPkgs[i].Locations.Add(file.NewLocation(fixture))
}
pkgtest.TestFileParser(t, fixture, parsePackageLock, expectedPkgs, expectedRelationships)
adapter := newGenericPackageLockAdapter(CatalogerConfig{})
pkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)
}
func TestParsePackageLockV2(t *testing.T) {
@@ -169,7 +170,8 @@ func TestParsePackageLockV2(t *testing.T) {
for i := range expectedPkgs {
expectedPkgs[i].Locations.Add(file.NewLocation(fixture))
}
pkgtest.TestFileParser(t, fixture, parsePackageLock, expectedPkgs, expectedRelationships)
adapter := newGenericPackageLockAdapter(CatalogerConfig{})
pkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)
}
func TestParsePackageLockV3(t *testing.T) {
@@ -220,7 +222,8 @@ func TestParsePackageLockV3(t *testing.T) {
for i := range expectedPkgs {
expectedPkgs[i].Locations.Add(file.NewLocation(fixture))
}
pkgtest.TestFileParser(t, fixture, parsePackageLock, expectedPkgs, expectedRelationships)
adapter := newGenericPackageLockAdapter(CatalogerConfig{})
pkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)
}
func TestParsePackageLockAlias(t *testing.T) {
@@ -279,7 +282,8 @@ func TestParsePackageLockAlias(t *testing.T) {
for i := range expected {
expected[i].Locations.Add(file.NewLocation(pl))
}
pkgtest.TestFileParser(t, pl, parsePackageLock, expected, expectedRelationships)
adapter := newGenericPackageLockAdapter(CatalogerConfig{})
pkgtest.TestFileParser(t, pl, adapter.parsePackageLock, expected, expectedRelationships)
}
}
@@ -326,5 +330,6 @@ func TestParsePackageLockLicenseWithArray(t *testing.T) {
for i := range expectedPkgs {
expectedPkgs[i].Locations.Add(file.NewLocation(fixture))
}
pkgtest.TestFileParser(t, fixture, parsePackageLock, expectedPkgs, expectedRelationships)
adapter := newGenericPackageLockAdapter(CatalogerConfig{})
pkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)
}
+6
View File
@@ -22,3 +22,9 @@ func NewComposerLockCataloger() pkg.Cataloger {
return generic.NewCataloger("php-composer-lock-cataloger").
WithParserByGlobs(parseComposerLock, "**/composer.lock")
}
// NewPeclCataloger returns a new cataloger for PHP PECL metadata“.
func NewPeclCataloger() pkg.Cataloger {
return generic.NewCataloger("php-pecl-serialized-cataloger").
WithParserByGlobs(parsePeclSerialized, "**/php/.registry/.channel.*/*.reg")
}
+25
View File
@@ -55,3 +55,28 @@ func Test_ComposerLockCataloger_Globs(t *testing.T) {
})
}
}
func Test_PeclCataloger_Globs(t *testing.T) {
tests := []struct {
name string
fixture string
expected []string
}{
{
name: "obtain pecl files",
fixture: "test-fixtures/glob-paths",
expected: []string{
"php/.registry/.channel.pecl.php.net/memcached.reg",
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
pkgtest.NewCatalogTester().
FromDirectory(t, test.fixture).
ExpectsResolverContentQueries(test.expected).
TestCataloger(t, NewPeclCataloger())
})
}
}
+27
View File
@@ -40,6 +40,22 @@ func newComposerInstalledPackage(pd parsedInstalledData, indexLocation file.Loca
return p
}
func newPeclPackage(pd pkg.PhpPeclEntry, indexLocation file.Location) pkg.Package {
p := pkg.Package{
Name: pd.Name,
Version: pd.Version,
Locations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),
Licenses: pkg.NewLicenseSet(pkg.NewLicensesFromLocation(indexLocation, pd.License...)...),
PURL: packageURLFromPecl(pd.Name, pd.Version),
Language: pkg.PHP,
Type: pkg.PhpPeclPkg,
Metadata: pd,
}
p.SetID()
return p
}
func packageURL(name, version string) string {
var pkgName, vendor string
fields := strings.Split(name, "/")
@@ -65,3 +81,14 @@ func packageURL(name, version string) string {
"")
return pURL.ToString()
}
func packageURLFromPecl(pkgName, version string) string {
pURL := packageurl.NewPackageURL(
"pecl",
"",
pkgName,
version,
nil,
"")
return pURL.ToString()
}
+25
View File
@@ -44,3 +44,28 @@ func Test_packageURL(t *testing.T) {
})
}
}
func Test_packageURLFromPecl(t *testing.T) {
tests := []struct {
name string
version string
expected string
}{
{
name: "memcached",
version: "3.2.0",
expected: "pkg:pecl/memcached@3.2.0",
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
actual := packageURLFromPecl(test.name, test.version)
if actual != test.expected {
dmp := diffmatchpatch.New()
diffs := dmp.DiffMain(test.expected, actual, true)
t.Errorf("diff: %s", dmp.DiffPrettyText(diffs))
}
})
}
}
@@ -0,0 +1,73 @@
package php
import (
"context"
"fmt"
"io"
"github.com/elliotchance/phpserialize"
"github.com/anchore/syft/internal/log"
"github.com/anchore/syft/syft/artifact"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
"github.com/anchore/syft/syft/pkg/cataloger/generic"
)
// parsePeclSerialized is a parser function for PECL metadata contents, returning "Default" php packages discovered.
func parsePeclSerialized(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {
var pkgs []pkg.Package
data, err := io.ReadAll(reader)
if err != nil {
return nil, nil, fmt.Errorf("failed to read file: %w", err)
}
metadata, err := phpserialize.UnmarshalAssociativeArray(
data,
)
if err != nil {
return nil, nil, fmt.Errorf("failed to parse pecl metadata file: %w", err)
}
name, ok := metadata["name"].(string)
if !ok {
return nil, nil, fmt.Errorf("failed to parse pecl package name: %w", err)
}
version := readStruct(metadata, "version", "release")
license := readStruct(metadata, "license", "_content")
pkgs = append(
pkgs,
newPeclPackage(
pkg.PhpPeclEntry{
Name: name,
Version: version,
License: []string{
license,
},
},
reader.Location,
),
)
return pkgs, nil, nil
}
func readStruct(metadata any, fields ...string) string {
if len(fields) > 0 {
value, ok := metadata.(map[any]any)
if !ok {
log.Tracef("unable to read '%s' from: %v", fields[0], metadata)
return ""
}
return readStruct(value[fields[0]], fields[1:]...)
}
value, ok := metadata.(string)
if !ok {
log.Tracef("unable to read value from: %v", metadata)
}
return value
}
@@ -0,0 +1,35 @@
package php
import (
"testing"
"github.com/anchore/syft/syft/artifact"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest"
)
func TestParsePeclSerialized(t *testing.T) {
var expectedRelationships []artifact.Relationship
fixture := "test-fixtures/memcached.reg"
locations := file.NewLocationSet(file.NewLocation(fixture))
expectedPkgs := []pkg.Package{
{
Name: "memcached",
Version: "3.2.0",
PURL: "pkg:pecl/memcached@3.2.0",
Locations: locations,
Licenses: pkg.NewLicenseSet(
pkg.NewLicenseFromLocations("PHP License", file.NewLocation(fixture)),
),
Language: pkg.PHP,
Type: pkg.PhpPeclPkg,
Metadata: pkg.PhpPeclEntry{
Name: "memcached",
Version: "3.2.0",
License: []string{"PHP License"},
},
},
}
pkgtest.TestFileParser(t, fixture, parsePeclSerialized, expectedPkgs, expectedRelationships)
}
@@ -0,0 +1 @@
a:5:{s:4:"name";s:9:"memcached";s:4:"date";s:10:"2022-01-11";s:4:"time";s:8:"15:23:47";s:7:"version";a:2:{s:7:"release";s:5:"3.2.0";s:3:"api";s:5:"3.2.0";}s:7:"license";a:2:{s:7:"attribs";a:1:{s:3:"uri";s:26:"http://www.php.net/license";}s:8:"_content";s:11:"PHP License";}}
+2 -2
View File
@@ -115,7 +115,7 @@ func Test_PackageCataloger(t *testing.T) {
expectedPackage: pkg.Package{
Name: "Pygments",
Version: "2.6.1",
PURL: "pkg:pypi/Pygments@2.6.1?vcs_url=git+https://github.com/python-test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
PURL: "pkg:pypi/Pygments@2.6.1?vcs_url=git%2Bhttps://github.com/python-test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
Type: pkg.PythonPkg,
Language: pkg.Python,
Licenses: pkg.NewLicenseSet(
@@ -154,7 +154,7 @@ func Test_PackageCataloger(t *testing.T) {
expectedPackage: pkg.Package{
Name: "Pygments",
Version: "2.6.1",
PURL: "pkg:pypi/Pygments@2.6.1?vcs_url=git+https://github.com/python-test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
PURL: "pkg:pypi/Pygments@2.6.1?vcs_url=git%2Bhttps://github.com/python-test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
Type: pkg.PythonPkg,
Language: pkg.Python,
Licenses: pkg.NewLicenseSet(
+1 -1
View File
@@ -35,7 +35,7 @@ func Test_packageURL(t *testing.T) {
CommitID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
},
},
want: "pkg:pypi/name@v0.1.0?vcs_url=git+https://github.com/test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
want: "pkg:pypi/name@v0.1.0?vcs_url=git%2Bhttps://github.com/test/test.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
},
}
for _, tt := range tests {
+6
View File
@@ -36,3 +36,9 @@ type PhpComposerAuthors struct {
Email string `json:"email,omitempty"`
Homepage string `json:"homepage,omitempty"`
}
type PhpPeclEntry struct {
Name string `json:"name"`
Version string `json:"version"`
License []string `json:"license,omitempty"`
}
+6
View File
@@ -34,6 +34,7 @@ const (
NixPkg Type = "nix"
NpmPkg Type = "npm"
PhpComposerPkg Type = "php-composer"
PhpPeclPkg Type = "php-pecl"
PortagePkg Type = "portage"
PythonPkg Type = "python"
Rpkg Type = "R-package"
@@ -68,6 +69,7 @@ var AllPkgs = []Type{
NixPkg,
NpmPkg,
PhpComposerPkg,
PhpPeclPkg,
PortagePkg,
PythonPkg,
Rpkg,
@@ -117,6 +119,8 @@ func (t Type) PackageURLType() string {
return packageurl.TypeGeneric
case PhpComposerPkg:
return packageurl.TypeComposer
case PhpPeclPkg:
return "pecl"
case PythonPkg:
return packageurl.TypePyPi
case PortagePkg:
@@ -169,6 +173,8 @@ func TypeByName(name string) Type {
return JavaPkg
case packageurl.TypeComposer:
return PhpComposerPkg
case "pecl":
return PhpPeclPkg
case packageurl.TypeGolang:
return GoModulePkg
case packageurl.TypeNPM:
+4
View File
@@ -59,6 +59,10 @@ func TestTypeFromPURL(t *testing.T) {
purl: "pkg:composer/laravel/laravel@5.5.0",
expected: PhpComposerPkg,
},
{
purl: "pkg:pecl/memcached@3.2.0",
expected: PhpPeclPkg,
},
{
purl: "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist",
expected: JavaPkg,
+1 -1
View File
@@ -9,7 +9,7 @@ import (
const (
// this is the number of packages that should be found in the image-pkg-coverage fixture image
// when analyzed with the squashed scope.
coverageImageSquashedPackageCount = 28
coverageImageSquashedPackageCount = 29
)
func TestPackagesCmdFlags(t *testing.T) {