Skip to content

[pull] main from guacsec:main - #239

Merged
pull[bot] merged 10 commits into
trustification:mainfrom
guacsec:main
Sep 4, 2026
Merged

[pull] main from guacsec:main#239
pull[bot] merged 10 commits into
trustification:mainfrom
guacsec:main

Conversation

@pull

@pull pull Bot commented Sep 4, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

ruromero and others added 10 commits September 4, 2026 11:27
Proposes a shared auth model with credential source abstraction
(inline/env/file) for all HTTP-based importers, enabling production
deployments to use K8s Secrets populated by Vault or ESO instead of
storing credentials as plaintext in the database.

Quay's legacy api_token field is deprecated in the API with backward
compatibility during a transition period.

Implements TC-5738

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…C-5170)

Non-RPM golang (oci/maven) must not inherit the rpm/Storage-3 status;
get_product_statuses_for_purl matches by name only. #[ignore] pending TC-5170.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fix silent data loss where versionless PURLs in CSAF advisories created
unbounded version ranges that never matched any version at query time.
All PostgreSQL *_version_matches functions now return true for fully
unbounded ranges (both bounds NULL), making "all versions" semantics
work correctly.

Change versionless PURL handling to be publisher-dependent: Red Hat
documents (detected via publisher namespace) treat versionless PURLs as
"all versions", while other publishers get empty-version exact match
with Generic scheme. The existing Red Hat "fixed→affected" special case
also switches from CPE vendor to publisher namespace detection.

Add vers: parsing via the vers-rs crate, integrated into CSAF ingestion
through BranchCategory::ProductVersionRange. When a branch has this
category, its name field is parsed as a vers: URI per CSAF 2.0 spec
section 3.1.2.3.2, and the resulting version range takes precedence
over any PURL version. Malformed vers: strings reject the document.

Un-ignore correlation tests s8 (TC-5733) and s11 (TC-5732) which now
pass thanks to the unbounded range fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix two bugs in the rpmver_cmp PL/pgSQL function compared to upstream
RPM's rpmvercmp:

1. Caret (^) ordering was inverted — ^ vs alpha segments returned the
   wrong sign. Upstream: ^ sorts after empty but before non-^ segments.

2. No epoch awareness — RPM's epoch:version prefix was not parsed.

Add Purl::effective_version() which folds the epoch qualifier into the
version string for RPM purls (e.g., "1:1.8.0") without modifying the
Purl struct itself, preserving standard purl display/serialization.
Use it for versioned_purl UUID computation, storage, and CSAF version
specs so epoch is consistently carried through version comparison.

Include a data migration that backfills existing versioned_purl entries
for RPM packages with epoch > 0 by creating new rows with correct
epoch-aware UUIDs and re-pointing qualified_purl FK references.

Port 47 test cases from the upstream RPM test suite covering numeric,
alpha, leading zeros, separators, tilde, caret, mixed, and epoch.

Implements TC-5733

Assisted-by: Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The embedded PostgreSQL used in tests requires libossp-uuid.so.16 to
load the uuid-ossp extension. Add the system dependency to the ci and
benchmark workflows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rsions special case

The VersionRange enum's Unbounded variant could not deserialize from
JSON where low_version and high_version are null (as emitted by the
raw SQL query). Add a custom deserializer that matches JSON objects
with both version fields null.

Drop the Red Hat "all versions" special case for versionless PURLs —
treating them as "all versions" caused false positives when the same
advisory also contained versioned PURLs with specific fix ranges.
Versionless PURLs now get empty-version exact match for all vendors.
Proper "all versions" semantics come from explicit vers: ranges.

Re-add #[ignore] on correlation test s11 (TC-5732) which depends on
versionless known_affected matching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…id-ossp

Replace the uuid-ossp extension with Rust-side UUID v5 computation using the
existing Purl::version_uuid() and effective_version() methods. This eliminates
the libossp-uuid16 system dependency from CI and avoids requiring the extension
in all deployment environments.

The migration now pages through affected rows (LIMIT 5000) with an exclusive
table lock to prevent concurrent modifications, computes deterministic UUIDs
in Rust, and writes results back via chunked inserts and parameterized updates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Assisted-by: Claude Code
…C-5171)

A RHEL 8 kernel must not match the OCP-scoped kernel entry bundled in a Go
CVE's advisory; product CPE context is not checked. Adds a lean go-toolset
within-substream version sanity (below/at/above on .el7_9). #[ignore] pending TC-5171.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Sep 4, 2026
@pull pull Bot added the ⤵️ pull label Sep 4, 2026
@pull
pull Bot merged commit 12a4b1a into trustification:main Sep 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants