whitepaper: 312 sites / 151 ecosystems — wave2+3 defect tables and PDF rebuild
Add 88 new defect entries to HIGH and MEDIUM tables:
HIGH: mysql-0001/0002, mariadb-0001, redis-0001/0002, valkey-0001/0002, openvpn-0001,
vlc-0001, prometheus-0001, otel-collector-0001, cockroachdb-0001..0004,
tidb-0001..0008, kubernetes-0001/0002, go-0001, kotlin-0002, scala-0001,
allegro5-0001, sdl2-0001, grafana-0001, clickhouse-0001, duckdb-0001,
mongodb-0001, envoy-0001, istio-0001, cilium-0001, linkerd2-0001,
linux-0001/0002/0003, tor-0002/0003, curl-0001, julia-0001, lua-0001,
perl5-0001, nats-0001, spring-0003/0004, tomcat-0001, onos-0002, odl-0002
MEDIUM: helm-0001, mariadb-0002, openssl-0001/0002, memcached-0001,
cassandra-0001..0004, flink-0001, storm-0001/0002, zookeeper-0001..0003,
pip-0001, gradle-0001, nginx-0001, haproxy-0001, caddy-0001, varnish-0001,
ffmpeg-0001, gstreamer-0001, raylib-0001, love2d-0001, php-0001/0002,
r-source-0001, cpython-0002, ruby-0001, rabbitmq-0003/0004, activemq-0001,
ovs-0001, onos-0003, odl-0002, jetty-0001
PDF: 976K
This commit is contained in:
parent
b3842ab6b8
commit
9934133dcf
260 changed files with 18278 additions and 15 deletions
|
|
@ -0,0 +1,80 @@
|
|||
diff --git a/pkg/k8s/slim/k8s/apis/labels/selector.go b/pkg/k8s/slim/k8s/apis/labels/selector.go
|
||||
index 1234567..abcdef0 100644
|
||||
--- a/pkg/k8s/slim/k8s/apis/labels/selector.go
|
||||
+++ b/pkg/k8s/slim/k8s/apis/labels/selector.go
|
||||
@@ -152,9 +152,11 @@ func (r Requirements) String() string {
|
||||
// Requirement contains values, a key, and an operator that relates the key and values.
|
||||
// The zero value of Requirement is invalid.
|
||||
// Requirement implements both set based match and exact match.
|
||||
// Requirement should be initialized via NewRequirement constructor for creating a valid Requirement.
|
||||
type Requirement struct {
|
||||
key string
|
||||
operator selection.Operator
|
||||
- // In huge majority of cases we have at most one value here.
|
||||
- // It is generally faster to operate on a single-element slice
|
||||
- // than on a single-element map, so we have a slice here.
|
||||
- strValues []string
|
||||
+ // strValues is a map for O(1) membership tests in hasValue().
|
||||
+ // For Gt/Lt and serialization, strValueList preserves ordered iteration.
|
||||
+ strValues map[string]struct{}
|
||||
+ strValueList []string
|
||||
}
|
||||
|
||||
@@ -210,7 +212,11 @@ func NewRequirement(key string, op selection.Operator, vals []string, opts ...fi
|
||||
if err != nil {
|
||||
allErrs = append(allErrs, err)
|
||||
}
|
||||
- return &Requirement{key: key, operator: op, strValues: vals}, allErrs.ToAggregate()
|
||||
+ valSet := make(map[string]struct{}, len(vals))
|
||||
+ for _, v := range vals {
|
||||
+ valSet[v] = struct{}{}
|
||||
+ }
|
||||
+ return &Requirement{key: key, operator: op, strValues: valSet, strValueList: vals}, allErrs.ToAggregate()
|
||||
}
|
||||
|
||||
@@ -216,7 +222,8 @@ func NewRequirement(key string, op selection.Operator, vals []string, opts ...fi
|
||||
-func (r *Requirement) hasValue(value string) bool {
|
||||
- return slices.Contains(r.strValues, value)
|
||||
+// hasValue is O(1) via map lookup instead of O(n) slices.Contains.
|
||||
+func (r *Requirement) hasValue(value string) bool {
|
||||
+ _, ok := r.strValues[value]
|
||||
+ return ok
|
||||
}
|
||||
|
||||
@@ -260,7 +268,7 @@ func (r *Requirement) Matches(ls Labels) bool {
|
||||
if len(r.strValues) != 1 {
|
||||
...
|
||||
}
|
||||
- for i := range r.strValues {
|
||||
- rValue, err = strconv.ParseInt(r.strValues[i], 10, 64)
|
||||
+ for _, v := range r.strValueList {
|
||||
+ rValue, err = strconv.ParseInt(v, 10, 64)
|
||||
...
|
||||
}
|
||||
|
||||
@@ -293,8 +301,8 @@ func (r *Requirement) Values() sets.String {
|
||||
ret := sets.String{}
|
||||
- for i := range r.strValues {
|
||||
- ret.Insert(r.strValues[i])
|
||||
+ for v := range r.strValues {
|
||||
+ ret.Insert(v)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
@@ -301,8 +309,7 @@ func (r *Requirement) ValuesUnsorted() []string {
|
||||
- ret := make([]string, 0, len(r.strValues))
|
||||
- ret = append(ret, r.strValues...)
|
||||
- return ret
|
||||
+ return append([]string(nil), r.strValueList...)
|
||||
}
|
||||
|
||||
@@ -309,5 +317,5 @@ func (r *Requirement) String() string {
|
||||
- return r.strValues
|
||||
+ return r.strValueList
|
||||
}
|
||||
|
||||
@@ -320,5 +328,5 @@ func (r Requirement) Equal(x Requirement) bool {
|
||||
- return slices.Equal(r.strValues, x.strValues)
|
||||
+ return slices.Equal(r.strValueList, x.strValueList)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue