diff --git a/solver/llbsolver/proc/sbom.go b/solver/llbsolver/proc/sbom.go index 2d7e969ba547..0a99163a3ae7 100644 --- a/solver/llbsolver/proc/sbom.go +++ b/solver/llbsolver/proc/sbom.go @@ -38,6 +38,10 @@ func SBOMProcessor(scannerRef string, useCache bool) llbsolver.Processor { if !ok { return nil, errors.Errorf("could not find ref %s", p.ID) } + if ref == nil { + continue + } + defop, err := llb.NewDefinitionOp(ref.Definition()) if err != nil { return nil, err diff --git a/util/resolver/authorizer.go b/util/resolver/authorizer.go index 6a4140d68b1b..d97d32dd6f5d 100644 --- a/util/resolver/authorizer.go +++ b/util/resolver/authorizer.go @@ -356,7 +356,15 @@ func (ah *authHandler) fetchToken(ctx context.Context, sm *session.Manager, g se if resp.ExpiresIn == 0 { resp.ExpiresIn = defaultExpiration } - issuedAt, expires = time.Unix(resp.IssuedAt, 0), int(resp.ExpiresIn) + expires = int(resp.ExpiresIn) + // We later check issuedAt.isZero, which would return + // false if converted from zero Unix time. Therefore, + // zero time value in response is handled separately + if resp.IssuedAt == 0 { + issuedAt = time.Time{} + } else { + issuedAt = time.Unix(resp.IssuedAt, 0) + } token = resp.Token return nil, nil }