diff --git a/pkg/promlib/converter/prom.go b/pkg/promlib/converter/prom.go index cb7975f978e..504ae33f3ca 100644 --- a/pkg/promlib/converter/prom.go +++ b/pkg/promlib/converter/prom.go @@ -6,6 +6,7 @@ import ( "slices" "strconv" "time" + "unsafe" "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/data" @@ -858,14 +859,17 @@ func readHistogram(iter *sdkjsoniter.Iterator, hist *histogramInfo) error { } func appendValueFromString(iter *sdkjsoniter.Iterator, field *data.Field) error { - var err error - var s string - if s, err = iter.ReadString(); err != nil { + // Read the string directly into our buffer + buf, err := iter.ReadStringAsSlice() + if err != nil { return err } - var v float64 - if v, err = strconv.ParseFloat(s, 64); err != nil { + // #nosec G103 + // Convert string to float64 without allocation + // https://github.com/search?q=org%3Agrafana+yoloString&type=code + v, err := strconv.ParseFloat(*(*string)(unsafe.Pointer(&buf)), 64) + if err != nil { return err }