mirror of
https://github.com/anchore/syft.git
synced 2026-11-02 15:36:41 +01:00
fix: skip docker:// references in github-actions PURL generation (#5302)
closes #5299: docker:// references are OCI images, not GitHub repos. Returning empty string produces a package with no PURL, matching the treatment for local composite actions. Signed-off-by: Yunare Maia <yunare@gmail.com>
This commit is contained in:
@@ -88,6 +88,13 @@ func packageURL(name, version string) string {
|
|||||||
var subPath string
|
var subPath string
|
||||||
var namespace string
|
var namespace string
|
||||||
|
|
||||||
|
// docker:// references are OCI images, not GitHub repos.
|
||||||
|
// They don't fit the pkg:github PURL shape, so skip them entirely
|
||||||
|
// (same treatment as local composite actions below).
|
||||||
|
if strings.HasPrefix(name, "docker:") {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
fields := strings.SplitN(name, "/", 3)
|
fields := strings.SplitN(name, "/", 3)
|
||||||
switch len(fields) {
|
switch len(fields) {
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package githubactions
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func Test_packageURL_skipsDockerPrefix(t *testing.T) {
|
||||||
|
// docker:// references should return empty PURL (not a valid pkg:github)
|
||||||
|
got := packageURL("docker://ghcr.io/sethvargo/ratchet:latest", "sha256:527e78e6d29a9ac306e843cf766afe0604a0b35633f16913d85dd522218e8ca1")
|
||||||
|
if got != "" {
|
||||||
|
t.Errorf("packageURL(digest-form) = %q, want empty string", got)
|
||||||
|
}
|
||||||
|
|
||||||
|
got = packageURL("docker://ghcr.io/some-org/some-action", "v1")
|
||||||
|
if got != "" {
|
||||||
|
t.Errorf("packageURL(tag-form) = %q, want empty string", got)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sanity: regular github actions still work
|
||||||
|
got = packageURL("actions/checkout", "v4")
|
||||||
|
want := "pkg:github/actions/checkout@v4"
|
||||||
|
if got != want {
|
||||||
|
t.Errorf("packageURL(regular) = %q, want %q", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
name: "Docker Actions Test"
|
||||||
|
on: [push]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: docker://ghcr.io/sethvargo/ratchet:latest@sha256:527e78e6d29a9ac306e843cf766afe0604a0b35633f16913d85dd522218e8ca1
|
||||||
|
- uses: docker://ghcr.io/some-org/some-action@v1
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
Reference in New Issue
Block a user