Add support for reading ELF package notes with section header (#2939)

* add support for reading ELF package notes with section header

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

* add systemd elf package fields to json schema

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

---------

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman
2024-06-07 14:38:54 -04:00
committed by GitHub
parent bc20e66d08
commit 254a562b4e
10 changed files with 2862 additions and 69 deletions
+29 -4
View File
@@ -15,9 +15,34 @@ type ClassifierMatch struct {
// ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of the binary
type ELFBinaryPackageNoteJSONPayload struct {
Type string `json:"type,omitempty"`
Vendor string `json:"vendor,omitempty"`
System string `json:"system,omitempty"`
// these are well-known fields as defined by systemd ELF package metadata "spec" https://systemd.io/ELF_PACKAGE_METADATA/
// Type is the type of the package (e.g. "rpm", "deb", "apk", etc.)
Type string `json:"type,omitempty"`
// Architecture of the binary package (e.g. "amd64", "arm", etc.)
Architecture string `json:"architecture,omitempty"`
// OS CPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)
OSCPE string `json:"osCPE,omitempty"`
// OS is the OS name, typically corresponding to ID in os-release (e.g. "fedora")
OS string `json:"os,omitempty"`
// osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. "33")
OSVersion string `json:"osVersion,omitempty"`
// these are additional fields that are not part of the systemd spec
// System is a context-specific name for the system that the binary package is intended to run on or a part of
System string `json:"system,omitempty"`
// Vendor is the individual or organization that produced the source code for the binary
Vendor string `json:"vendor,omitempty"`
// SourceRepo is the URL to the source repository for which the binary was built from
SourceRepo string `json:"sourceRepo,omitempty"`
Commit string `json:"commit,omitempty"`
// Commit is the commit hash of the source repository for which the binary was built from
Commit string `json:"commit,omitempty"`
}