mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-10-18 09:40:32 +00:00
test(xcat-dep): check every target ships Net::DNS 1.56 or newer
openeuler-24.03-ppc64le ships the openEuler GA rpm perl-Net-DNS-1.40. That release has CVE-2026-64193 (EDNS EXTENDED-ERROR code injection) and CVE-2026-64194 (unbounded compression-pointer chains). Net::DNS 1.56 fixes both. The test now reads the release each target ships: the version of the pinned publisher rpm, or else the version the spec builds. It fails when that release is below 1.56. It fails on openeuler-24.03-ppc64le until that target builds Net::DNS from the xcat-dep spec. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
This commit is contained in:
@@ -73,7 +73,15 @@ if (($owner->{type} // '') eq 'publisher') {
|
||||
# when the built rpm does not match it. A pin below $KEY_FLOOR puts a Net::DNS without KEY back
|
||||
# into the repositories a service node reads, which have no EPEL copy to outrank it. An operator
|
||||
# pin (">= 0.80") accepts such a build too, so only an exact version is allowed here.
|
||||
# Net::DNS 1.56 fixes CVE-2026-64193 (EDNS EXTENDED-ERROR code injection) and CVE-2026-64194
|
||||
# (unbounded compression-pointer chains). A target ships either the published rpm its catalog pins
|
||||
# or the release this spec builds; that release, not the pin, is what reaches the repository.
|
||||
my $CVE_FLOOR = '1.56';
|
||||
|
||||
for my $target (@targets) {
|
||||
my $ships = $shipped{$target} // $version;
|
||||
ok(version->parse($ships) >= version->parse($CVE_FLOOR),
|
||||
"[$target] ships Net::DNS $CVE_FLOOR or newer ($ships), with CVE-2026-64193 and CVE-2026-64194 fixed");
|
||||
my $pin = $manifest{$target}{'perl-Net-DNS'};
|
||||
my $exact = $pin =~ /\A\d+(?:\.\d+)+\z/ ? 1 : 0;
|
||||
ok($exact, "[$target] the perl-Net-DNS pin ($pin) names one exact version");
|
||||
|
||||
Reference in New Issue
Block a user