Merge pull request #3113 from chengzhichao-xydt/codex/manager-channel-marshal-errors

fix(channels): check json marshal/unmarshal errors in toChannelHashes
This commit is contained in:
Mauro 2026-06-12 13:17:00 +02:00 committed by GitHub
commit c362114cf1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4,6 +4,7 @@ import (
"crypto/md5" "crypto/md5"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"log"
"github.com/sipeed/picoclaw/pkg/config" "github.com/sipeed/picoclaw/pkg/config"
) )
@ -11,17 +12,27 @@ import (
func toChannelHashes(cfg *config.Config) map[string]string { func toChannelHashes(cfg *config.Config) map[string]string {
result := make(map[string]string) result := make(map[string]string)
ch := cfg.Channels ch := cfg.Channels
// should not be error marshal, err := json.Marshal(ch)
marshal, _ := json.Marshal(ch) if err != nil {
log.Printf("[manager_channel] failed to marshal channels config: %v", err)
return result
}
var channelConfig map[string]map[string]any var channelConfig map[string]map[string]any
_ = json.Unmarshal(marshal, &channelConfig) if err := json.Unmarshal(marshal, &channelConfig); err != nil {
log.Printf("[manager_channel] failed to unmarshal channels config: %v", err)
return result
}
for key, value := range channelConfig { for key, value := range channelConfig {
if enabled, ok := value["enabled"].(bool); !ok || !enabled { if enabled, ok := value["enabled"].(bool); !ok || !enabled {
continue continue
} }
hiddenValues(key, value, ch.Get(key)) hiddenValues(key, value, ch.Get(key))
valueBytes, _ := json.Marshal(value) valueBytes, err := json.Marshal(value)
if err != nil {
log.Printf("[manager_channel] failed to marshal channel %s config: %v", key, err)
continue
}
hash := md5.Sum(valueBytes) hash := md5.Sum(valueBytes)
result[key] = hex.EncodeToString(hash[:]) result[key] = hex.EncodeToString(hash[:])
} }