Skip to content

Commit 104bbc1

Browse files
authored
feat(alpine): add maintainer field extraction for APK packages (#8930)
Signed-off-by: knqyf263 <[email protected]>
1 parent c7b8cc3 commit 104bbc1

File tree

11 files changed

+183
-82
lines changed

11 files changed

+183
-82
lines changed

integration/testdata/alpine-39-high-critical.json.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
"PkgName": "musl",
6969
"PkgIdentifier": {
7070
"PURL": "pkg:apk/alpine/[email protected]?arch=x86_64\u0026distro=3.9.4",
71-
"UID": "d6abd271e71d3ce2"
71+
"UID": "aae058383ba5a25e"
7272
},
7373
"InstalledVersion": "1.1.20-r4",
7474
"FixedVersion": "1.1.20-r5",
@@ -114,7 +114,7 @@
114114
"PkgName": "musl-utils",
115115
"PkgIdentifier": {
116116
"PURL": "pkg:apk/alpine/[email protected]?arch=x86_64\u0026distro=3.9.4",
117-
"UID": "a35dd6cab4aabdf1"
117+
"UID": "4089d29c2d05b72d"
118118
},
119119
"InstalledVersion": "1.1.20-r4",
120120
"FixedVersion": "1.1.20-r5",

integration/testdata/alpine-39.json.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@
380380
"PkgName": "musl",
381381
"PkgIdentifier": {
382382
"PURL": "pkg:apk/alpine/[email protected]?arch=x86_64\u0026distro=3.9.4",
383-
"UID": "d6abd271e71d3ce2"
383+
"UID": "aae058383ba5a25e"
384384
},
385385
"InstalledVersion": "1.1.20-r4",
386386
"FixedVersion": "1.1.20-r5",
@@ -426,7 +426,7 @@
426426
"PkgName": "musl-utils",
427427
"PkgIdentifier": {
428428
"PURL": "pkg:apk/alpine/[email protected]?arch=x86_64\u0026distro=3.9.4",
429-
"UID": "a35dd6cab4aabdf1"
429+
"UID": "4089d29c2d05b72d"
430430
},
431431
"InstalledVersion": "1.1.20-r4",
432432
"FixedVersion": "1.1.20-r5",

pkg/fanal/analyzer/analyzer_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ func TestAnalyzerGroup_AnalyzeFile(t *testing.T) {
342342
SrcName: "musl",
343343
SrcVersion: "1.1.24-r2",
344344
Licenses: []string{"MIT"},
345+
Maintainer: "Timo Teräs <[email protected]>",
345346
Arch: "x86_64",
346347
Digest: "sha1:cb2316a189ebee5282c4a9bd98794cc2477a74c6",
347348
InstalledFiles: []string{

pkg/fanal/analyzer/pkg/apk/apk.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ func (a alpinePkgAnalyzer) parseApkInfo(ctx context.Context, scanner *bufio.Scan
108108
if d != "" {
109109
pkg.Digest = d
110110
}
111+
case "m:":
112+
pkg.Maintainer = line[2:]
111113
}
112114

113115
if pkg.Name != "" && pkg.Version != "" {

pkg/fanal/analyzer/pkg/apk/apk_test.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var pkgs = []types.Package{
1919
SrcName: "musl",
2020
SrcVersion: "1.1.14-r10",
2121
Licenses: []string{"MIT"},
22+
Maintainer: "Timo Teräs <[email protected]>",
2223
Arch: "x86_64",
2324
Digest: "sha1:d68b402f35f57750f49156b0cb4e886a2ad35d2d",
2425
InstalledFiles: []string{
@@ -33,6 +34,7 @@ var pkgs = []types.Package{
3334
SrcName: "busybox",
3435
SrcVersion: "1.24.2-r9",
3536
Licenses: []string{"GPL-2.0-only"},
37+
Maintainer: "Natanael Copa <[email protected]>",
3638
DependsOn: []string{"[email protected]"},
3739
Arch: "x86_64",
3840
Digest: "sha1:ca124719267cd0bedc2f4cb850a286ac13f0ad44",
@@ -51,6 +53,7 @@ var pkgs = []types.Package{
5153
SrcName: "alpine-baselayout",
5254
SrcVersion: "3.0.3-r0",
5355
Licenses: []string{"GPL-2.0-only"},
56+
Maintainer: "Natanael Copa <[email protected]>",
5457
DependsOn: []string{
5558
5659
@@ -92,6 +95,7 @@ var pkgs = []types.Package{
9295
SrcName: "alpine-keys",
9396
SrcVersion: "1.1-r0",
9497
Licenses: []string{"GPL-2.0-or-later"},
98+
Maintainer: "Natanael Copa <[email protected]>",
9599
Arch: "x86_64",
96100
Digest: "sha1:4def7ffaee6aeba700c1d62570326f75cbb8fa25",
97101
InstalledFiles: []string{
@@ -109,6 +113,7 @@ var pkgs = []types.Package{
109113
SrcName: "zlib",
110114
SrcVersion: "1.2.8-r2",
111115
Licenses: []string{"Zlib"},
116+
Maintainer: "Natanael Copa <[email protected]>",
112117
DependsOn: []string{"[email protected]"},
113118
Arch: "x86_64",
114119
Digest: "sha1:efd04d34d40aa8eb331480127364c27a8ba760ef",
@@ -124,6 +129,7 @@ var pkgs = []types.Package{
124129
SrcName: "openssl",
125130
SrcVersion: "1.0.2h-r1",
126131
Licenses: []string{"OpenSSL"},
132+
Maintainer: "Timo Teras <[email protected]>",
127133
DependsOn: []string{
128134
129135
@@ -155,6 +161,7 @@ var pkgs = []types.Package{
155161
SrcName: "openssl",
156162
SrcVersion: "1.0.2h-r1",
157163
Licenses: []string{"OpenSSL"},
164+
Maintainer: "Timo Teras <[email protected]>",
158165
Digest: "sha1:7120f337e93b2b4c44e0f5f31a15b60dc678ca14",
159166
DependsOn: []string{
160167
@@ -173,6 +180,7 @@ var pkgs = []types.Package{
173180
SrcName: "apk-tools",
174181
SrcVersion: "2.6.7-r0",
175182
Licenses: []string{"GPL-2.0-only"},
183+
Maintainer: "Natanael Copa <[email protected]>",
176184
Digest: "sha1:0990c0acd62b4175818c3a4cc60ed11f14e23bd8",
177185
DependsOn: []string{
178186
@@ -192,6 +200,7 @@ var pkgs = []types.Package{
192200
SrcName: "pax-utils",
193201
SrcVersion: "1.1.6-r0",
194202
Licenses: []string{"GPL-2.0-only"},
203+
Maintainer: "Natanael Copa <[email protected]>",
195204
Digest: "sha1:f9bab817c5ad93e92a6218bc0f7596b657c02d90",
196205
DependsOn: []string{"[email protected]"},
197206
Arch: "x86_64",
@@ -210,7 +219,8 @@ var pkgs = []types.Package{
210219
"BSD-3-Clause",
211220
"GPL-2.0-or-later",
212221
},
213-
Digest: "sha1:608aa1dd39eff7bc6615d3e5e33383750f8f5ecc",
222+
Maintainer: "Timo Teräs <[email protected]>",
223+
Digest: "sha1:608aa1dd39eff7bc6615d3e5e33383750f8f5ecc",
214224
DependsOn: []string{
215225
216226
@@ -231,6 +241,7 @@ var pkgs = []types.Package{
231241
SrcName: "libc-dev",
232242
SrcVersion: "0.7-r0",
233243
Licenses: []string{"GPL-2.0-or-later"},
244+
Maintainer: "Natanael Copa <[email protected]>",
234245
Digest: "sha1:9055bc7afd76cf2672198042f72fc4a5ed4fa961",
235246
DependsOn: []string{"[email protected]"},
236247
Arch: "x86_64",
@@ -243,6 +254,7 @@ var pkgs = []types.Package{
243254
SrcName: "pkgconf",
244255
SrcVersion: "1.6.0-r0",
245256
Licenses: []string{"ISC"},
257+
Maintainer: "William Pitcock <[email protected]>",
246258
Digest: "sha1:e6242ac29589c8a84a4b179b491ea7c29fce66a9",
247259
DependsOn: []string{"[email protected]"},
248260
Arch: "x86_64",
@@ -261,6 +273,7 @@ var pkgs = []types.Package{
261273
SrcName: "sqlite",
262274
SrcVersion: "3.26.0-r3",
263275
Licenses: []string{"Public-Domain"},
276+
Maintainer: "Carlo Landmeter <[email protected]>",
264277
Digest: "sha1:1464946c3a5f0dd5a67ca1af930fc17af7a74474",
265278
DependsOn: []string{"[email protected]"},
266279
Arch: "x86_64",
@@ -276,6 +289,7 @@ var pkgs = []types.Package{
276289
SrcName: "test-parent",
277290
SrcVersion: "2.9.11_pre20061021-r2",
278291
Licenses: []string{"Public-Domain"},
292+
Maintainer: "Carlo Landmeter <[email protected]>",
279293
Digest: "sha1:f0bf315ec54828188910e4a665c00bc48bdbdd7d",
280294
DependsOn: []string{
281295
@@ -300,7 +314,8 @@ var pkgs = []types.Package{
300314
"MIT",
301315
"MPL-2.0",
302316
},
303-
Digest: "sha1:593154f80c440685448e0f52479725d7bc9b678d",
317+
Maintainer: "Jakub Jirutka <[email protected]>",
318+
Digest: "sha1:593154f80c440685448e0f52479725d7bc9b678d",
304319
DependsOn: []string{
305320
306321
},

pkg/fanal/artifact/image/image_test.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func TestArtifact_Inspect(t *testing.T) {
5050
SrcName: "alpine-baselayout",
5151
SrcVersion: "3.2.0-r3",
5252
Licenses: []string{"GPL-2.0-only"},
53+
Maintainer: "Natanael Copa <[email protected]>",
5354
Digest: "sha1:8f373f5b329c3aaf136eb30c63a387661ee0f3d0",
5455
DependsOn: []string{
5556
@@ -93,6 +94,7 @@ func TestArtifact_Inspect(t *testing.T) {
9394
SrcName: "alpine-keys",
9495
SrcVersion: "2.1-r2",
9596
Licenses: []string{"MIT"},
97+
Maintainer: "Natanael Copa <[email protected]>",
9698
Arch: "x86_64",
9799
Digest: "sha1:64929f85b7f8b4adbb664d905410312936b79d9b",
98100
InstalledFiles: []string{
@@ -123,6 +125,7 @@ func TestArtifact_Inspect(t *testing.T) {
123125
SrcName: "apk-tools",
124126
SrcVersion: "2.10.4-r3",
125127
Licenses: []string{"GPL-2.0-only"},
128+
Maintainer: "Natanael Copa <[email protected]>",
126129
Digest: "sha1:b15ad0c90e4493dfdc948d6b90a8e020da8936ef",
127130
DependsOn: []string{
128131
@@ -142,6 +145,7 @@ func TestArtifact_Inspect(t *testing.T) {
142145
SrcName: "busybox",
143146
SrcVersion: "1.31.1-r9",
144147
Licenses: []string{"GPL-2.0-only"},
148+
Maintainer: "Natanael Copa <[email protected]>",
145149
Digest: "sha1:a457703d71654811ea28d8d27a5cfc49ece27b34",
146150
DependsOn: []string{
147151
@@ -167,8 +171,9 @@ func TestArtifact_Inspect(t *testing.T) {
167171
"MPL-2.0",
168172
"GPL-2.0-or-later",
169173
},
170-
Arch: "x86_64",
171-
Digest: "sha1:3aeb8a90d7179d2a187782e980a964494e08c5fb",
174+
Maintainer: "Natanael Copa <[email protected]>",
175+
Arch: "x86_64",
176+
Digest: "sha1:3aeb8a90d7179d2a187782e980a964494e08c5fb",
172177
InstalledFiles: []string{
173178
"etc/ssl/cert.pem",
174179
},
@@ -180,6 +185,7 @@ func TestArtifact_Inspect(t *testing.T) {
180185
SrcName: "libc-dev",
181186
SrcVersion: "0.7.2-r0",
182187
Licenses: []string{"BSD-3-Clause"},
188+
Maintainer: "Natanael Copa <[email protected]>",
183189
Digest: "sha1:a7bf32bd32c6d3de2d1c4d7e753a0919b998cd01",
184190
DependsOn: []string{
185191
@@ -193,6 +199,7 @@ func TestArtifact_Inspect(t *testing.T) {
193199
SrcName: "openssl",
194200
SrcVersion: "1.1.1d-r3",
195201
Licenses: []string{"OpenSSL"},
202+
Maintainer: "Timo Teras <[email protected]>",
196203
Digest: "sha1:dd8fb9a3cce7b2bcf954271da62fb85dac2b106a",
197204
DependsOn: []string{
198205
@@ -220,6 +227,7 @@ func TestArtifact_Inspect(t *testing.T) {
220227
SrcName: "openssl",
221228
SrcVersion: "1.1.1d-r3",
222229
Licenses: []string{"OpenSSL"},
230+
Maintainer: "Timo Teras <[email protected]>",
223231
Digest: "sha1:938d46e41b3e56b339a3aeb2d02fad3d75728f35",
224232
DependsOn: []string{
225233
@@ -258,6 +266,7 @@ func TestArtifact_Inspect(t *testing.T) {
258266
SrcName: "musl",
259267
SrcVersion: "1.1.24-r2",
260268
Licenses: []string{"MIT"},
269+
Maintainer: "Timo Teräs <[email protected]>",
261270
Arch: "x86_64",
262271
Digest: "sha1:cb2316a189ebee5282c4a9bd98794cc2477a74c6",
263272
InstalledFiles: []string{
@@ -276,7 +285,8 @@ func TestArtifact_Inspect(t *testing.T) {
276285
"BSD-3-Clause",
277286
"GPL-2.0-or-later",
278287
},
279-
Digest: "sha1:6d3b45e79dbab444ca7cbfa59e2833203be6fb6a",
288+
Maintainer: "Timo Teräs <[email protected]>",
289+
Digest: "sha1:6d3b45e79dbab444ca7cbfa59e2833203be6fb6a",
280290
DependsOn: []string{
281291
282292
@@ -297,6 +307,7 @@ func TestArtifact_Inspect(t *testing.T) {
297307
SrcName: "pax-utils",
298308
SrcVersion: "1.2.4-r0",
299309
Licenses: []string{"GPL-2.0-only"},
310+
Maintainer: "Natanael Copa <[email protected]>",
300311
Digest: "sha1:d6147beb32bff803b5d9f83a3bec7ab319087185",
301312
DependsOn: []string{
302313
@@ -313,6 +324,7 @@ func TestArtifact_Inspect(t *testing.T) {
313324
SrcName: "busybox",
314325
SrcVersion: "1.31.1-r9",
315326
Licenses: []string{"GPL-2.0-only"},
327+
Maintainer: "Natanael Copa <[email protected]>",
316328
Digest: "sha1:3b685152af320120ae8941c740d3376b54e43c10",
317329
DependsOn: []string{
318330
@@ -330,6 +342,7 @@ func TestArtifact_Inspect(t *testing.T) {
330342
SrcName: "zlib",
331343
SrcVersion: "1.2.11-r3",
332344
Licenses: []string{"Zlib"},
345+
Maintainer: "Natanael Copa <[email protected]>",
333346
Digest: "sha1:acca078ee8baa93e005f57b2fae359c1efd443cd",
334347
DependsOn: []string{
335348

pkg/fanal/artifact/local/fs_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func TestArtifact_Inspect(t *testing.T) {
6666
SrcName: "musl",
6767
SrcVersion: "1.1.24-r2",
6868
Licenses: []string{"MIT"},
69+
Maintainer: "Timo Teräs <[email protected]>",
6970
Arch: "x86_64",
7071
Digest: "sha1:cb2316a189ebee5282c4a9bd98794cc2477a74c6",
7172
InstalledFiles: []string{

pkg/fanal/artifact/vm/vm_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,16 @@ func TestArtifact_Inspect(t *testing.T) {
118118
rootDir: "testdata/alpine",
119119
wantBlobs: []cachetest.WantBlob{
120120
{
121-
ID: "sha256:fecb09f4a7f0382a4feb2fb086ed5e37eaab644fef7b8f87c550a6e94a7f780f",
121+
ID: "sha256:9ca6dbba47cea74d3f9b0bf0472314735d06f42d3ccf8cfe7c021f61a3420973",
122122
BlobInfo: expectedBlobInfo,
123123
},
124124
},
125125
want: artifact.Reference{
126126
Name: "rawdata.img",
127127
Type: types.TypeVM,
128-
ID: "sha256:fecb09f4a7f0382a4feb2fb086ed5e37eaab644fef7b8f87c550a6e94a7f780f",
128+
ID: "sha256:9ca6dbba47cea74d3f9b0bf0472314735d06f42d3ccf8cfe7c021f61a3420973",
129129
BlobIDs: []string{
130-
"sha256:fecb09f4a7f0382a4feb2fb086ed5e37eaab644fef7b8f87c550a6e94a7f780f",
130+
"sha256:9ca6dbba47cea74d3f9b0bf0472314735d06f42d3ccf8cfe7c021f61a3420973",
131131
},
132132
},
133133
},
@@ -202,6 +202,7 @@ var expectedBlobInfo = types.BlobInfo{
202202
SrcName: "musl",
203203
SrcVersion: "1.2.3-r5",
204204
Licenses: []string{"MIT"},
205+
Maintainer: "Timo Teräs <[email protected]>",
205206
Arch: "aarch64",
206207
Digest: "sha1:742b0a26f327c6da60d42a02c3eb6189a58e468f",
207208
InstalledFiles: []string{

0 commit comments

Comments
 (0)