Skip to content

Commit ac343f6

Browse files
committed
fix: Filter empty reference IDs at source instead of in loop
This addresses the reviewer feedback from @setrofim about treating the root cause rather than symptoms. Empty reference IDs are now filtered immediately after GetRefValueIDs() to ensure EvidenceContext.ReferenceIds never contains empty strings, rather than skipping them later in the loop. This is a cleaner approach that prevents the issue from propagating throughout the system and maintains data integrity at the source. Signed-off-by: Kallal Mukherjee <ritamukherje62@gmail.com>
1 parent 2f48d8c commit ac343f6

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

vts/trustedservices/trustedservices_grpc.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -428,25 +428,28 @@ func (o *GRPC) GetAttestation(
428428
return o.finalize(appraisal, err)
429429
}
430430

431+
// Filter out empty reference IDs (can occur when no software components are provisioned)
432+
filteredReferenceIDs := make([]string, 0, len(referenceIDs))
433+
for _, refID := range referenceIDs {
434+
if refID != "" {
435+
filteredReferenceIDs = append(filteredReferenceIDs, refID)
436+
}
437+
}
438+
431439
appraisal.EvidenceContext.Evidence, err = structpb.NewStruct(claims)
432440
if err != nil {
433441
err = fmt.Errorf("unserializable claims in result: %w", err)
434442
return o.finalize(appraisal, err)
435443
}
436444

437-
appraisal.EvidenceContext.ReferenceIds = referenceIDs
445+
appraisal.EvidenceContext.ReferenceIds = filteredReferenceIDs
438446

439447
o.logger.Debugw("constructed evidence context",
440448
"software-id", appraisal.EvidenceContext.ReferenceIds,
441449
"trust-anchor-id", appraisal.EvidenceContext.TrustAnchorIds)
442450

443451
var multEndorsements []string
444452
for _, refvalID := range appraisal.EvidenceContext.ReferenceIds {
445-
// Skip empty reference IDs (can occur when no software components are provisioned)
446-
if refvalID == "" {
447-
o.logger.Debugw("skipping empty reference ID", "refvalID", refvalID)
448-
continue
449-
}
450453

451454
endorsements, err := o.EnStore.Get(refvalID)
452455
if err != nil && !errors.Is(err, kvstore.ErrKeyNotFound) {

0 commit comments

Comments
 (0)