From e5c7772d3c7cf07096b5c9f21a73d1573f3672ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E6=99=BA=E8=B6=850668000959?= Date: Fri, 5 Jun 2026 09:49:44 +0800 Subject: [PATCH] fix(channels): add ok checks for type assertions in toChannelHashes Two type assertions in toChannelHashes could panic when channel config values had unexpected types from JSON unmarshal: 1) value[enabled].(bool) panics if the key is missing or not a bool 2) vv.(map[string]string) panics when JSON unmarshal produces map[string]any. Add ok checks to safely handle both cases. --- pkg/channels/manager_channel.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/channels/manager_channel.go b/pkg/channels/manager_channel.go index 9dbd35cab..b6b407c59 100644 --- a/pkg/channels/manager_channel.go +++ b/pkg/channels/manager_channel.go @@ -17,7 +17,7 @@ func toChannelHashes(cfg *config.Config) map[string]string { _ = json.Unmarshal(marshal, &channelConfig) for key, value := range channelConfig { - if !value["enabled"].(bool) { + if enabled, ok := value["enabled"].(bool); !ok || !enabled { continue } hiddenValues(key, value, ch.Get(key)) @@ -94,7 +94,15 @@ func hiddenValues(key string, value map[string]any, ch *config.Channel) { vv := value["webhooks"] webhooks := make(map[string]string) if vv != nil { - webhooks = vv.(map[string]string) + if m, ok := vv.(map[string]string); ok { + webhooks = m + } else if m, ok := vv.(map[string]any); ok { + for k, w := range m { + if s, ok := w.(string); ok { + webhooks[k] = s + } + } + } } if settings, ok := v.(*config.TeamsWebhookSettings); ok { for name, target := range settings.Webhooks {