From 58b4126f0b66d39c88244c910750c941555aa15f Mon Sep 17 00:00:00 2001 From: Thomas Casteleyn Date: Thu, 7 Nov 2024 15:18:39 +0100 Subject: [PATCH] fix(inputs.snmp): Fix crash when trying to format fields from unknown OIDs (#16155) --- internal/snmp/translator_gosmi.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/snmp/translator_gosmi.go b/internal/snmp/translator_gosmi.go index f85751649..fb52df7a8 100644 --- a/internal/snmp/translator_gosmi.go +++ b/internal/snmp/translator_gosmi.go @@ -12,6 +12,8 @@ import ( "github.com/influxdata/telegraf" ) +var errCannotFormatUnkownType = errors.New("cannot format value, unknown type") + type gosmiTranslator struct { } @@ -64,6 +66,10 @@ func (g *gosmiTranslator) SnmpFormatEnum(oid string, value interface{}, full boo return "", err } + if node.Type == nil { + return "", errCannotFormatUnkownType + } + var v models.Value if full { v = node.FormatValue(value, models.FormatEnumName, models.FormatEnumValue) @@ -71,7 +77,7 @@ func (g *gosmiTranslator) SnmpFormatEnum(oid string, value interface{}, full boo v = node.FormatValue(value, models.FormatEnumName) } - return v.Formatted, nil + return v.String(), nil } func (g *gosmiTranslator) SnmpFormatDisplayHint(oid string, value interface{}) (string, error) { @@ -85,9 +91,11 @@ func (g *gosmiTranslator) SnmpFormatDisplayHint(oid string, value interface{}) ( return "", err } - v := node.FormatValue(value) + if node.Type == nil { + return "", errCannotFormatUnkownType + } - return v.Formatted, nil + return node.FormatValue(value).String(), nil } func getIndex(mibPrefix string, node gosmi.SmiNode) (col []string, tagOids map[string]struct{}) {