diff --git a/endpoint/labels.go b/endpoint/labels.go index 6667ff8391..234c1361df 100644 --- a/endpoint/labels.go +++ b/endpoint/labels.go @@ -63,11 +63,10 @@ func NewLabelsFromStringPlain(labelText string) (Labels, error) { tokens := strings.Split(labelText, ",") foundExternalDNSHeritage := false for _, token := range tokens { - if len(strings.Split(token, "=")) != 2 { + key, val, ok := strings.Cut(token, "=") + if !ok { continue } - key := strings.Split(token, "=")[0] - val := strings.Split(token, "=")[1] if key == "heritage" && val != heritage { return nil, ErrInvalidHeritage } diff --git a/endpoint/labels_test.go b/endpoint/labels_test.go index 147152372d..460de7a6ea 100644 --- a/endpoint/labels_test.go +++ b/endpoint/labels_test.go @@ -178,6 +178,19 @@ func (suite *LabelsSuite) TestDeserialize() { suite.Nil(multipleHeritage, "if error should return nil") } +func (suite *LabelsSuite) TestSerializeDeserializeWithEqualsInValue() { + labels := Labels{ + "owner": "team=platform", + "resource": "ingress/default/example", + } + + serialized := labels.SerializePlain(false) + parsed, err := NewLabelsFromStringPlain(serialized) + + suite.NoError(err) + suite.Equal(labels, parsed) +} + func TestLabels(t *testing.T) { suite.Run(t, new(LabelsSuite)) }