Skip to content

Commit 22d8446

Browse files
committed
llbsolver: fix policy rule ordering
The older of rules in policy matters. Eg. in [DENY *, ALLOW ref] mixing the order would deny all sources so map can't be used to deduplicate the rules. Signed-off-by: Tonis Tiigi <[email protected]>
1 parent 31a9120 commit 22d8446

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

solver/llbsolver/solver.go

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -981,27 +981,21 @@ func loadEntitlements(b solver.Builder) (entitlements.Set, error) {
981981
}
982982

983983
func loadSourcePolicy(b solver.Builder) (*spb.Policy, error) {
984-
set := make(map[spb.Rule]struct{}, 0)
984+
var srcPol spb.Policy
985985
err := b.EachValue(context.TODO(), keySourcePolicy, func(v interface{}) error {
986986
x, ok := v.(spb.Policy)
987987
if !ok {
988988
return errors.Errorf("invalid source policy %T", v)
989989
}
990990
for _, f := range x.Rules {
991-
set[*f] = struct{}{}
991+
r := *f
992+
srcPol.Rules = append(srcPol.Rules, &r)
992993
}
994+
srcPol.Version = x.Version
993995
return nil
994996
})
995997
if err != nil {
996998
return nil, err
997999
}
998-
var srcPol *spb.Policy
999-
if len(set) > 0 {
1000-
srcPol = &spb.Policy{}
1001-
for k := range set {
1002-
k := k
1003-
srcPol.Rules = append(srcPol.Rules, &k)
1004-
}
1005-
}
1006-
return srcPol, nil
1000+
return &srcPol, nil
10071001
}

0 commit comments

Comments
 (0)