feat: include Debian source package in apt get_packages

dpkg-query now also reports ${source:Package} as source_package for accurate
OSV vulnerability matching (binary -> source, e.g. libssl3 -> openssl).
This commit is contained in:
Christian Manivong
2026-08-23 17:45:07 +07:00
parent 799d1ce749
commit 7faaafb7a3
+7 -3
View File
@@ -813,17 +813,20 @@ class LinuxDriver(OSDriver):
def _get_packages_apt(self) -> list[PackageDict]:
out = self._send(
"dpkg-query -W -f='${Package}\\t${Version}\\t${Installed-Size}\\t${binary:Summary}\\n' 2>/dev/null"
"dpkg-query -W -f='${Package}\\t${Version}\\t${Installed-Size}"
"\\t${source:Package}\\t${binary:Summary}\\n' 2>/dev/null"
)
packages: list[PackageDict] = []
for line in out.splitlines():
parts = line.split("\t", 3)
parts = line.split("\t", 4)
if len(parts) < 2:
continue
name = parts[0].strip()
version = parts[1].strip()
size = int(parts[2].strip()) * 1024 if len(parts) > 2 and parts[2].strip().isdigit() else 0
description = parts[3].strip() if len(parts) > 3 else ""
# Debian source package (e.g. openssh-server → openssh) for OSV matching.
source_package = parts[3].strip() if len(parts) > 3 and parts[3].strip() else name
description = parts[4].strip() if len(parts) > 4 else ""
packages.append({
"name": name,
"version": version,
@@ -831,6 +834,7 @@ class LinuxDriver(OSDriver):
"description": description,
"size": size,
"source": "apt",
"source_package": source_package,
})
return packages