fix: guard against nil session storage

This commit is contained in:
jamesread 2025-10-25 00:22:28 +01:00
parent aa8322c354
commit 0dd9e9b2b7
1 changed files with 22 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import (
"time"
"github.com/OliveTin/OliveTin/internal/config"
"github.com/sirupsen/logrus"
"gopkg.in/yaml.v3"
)
@ -86,29 +87,50 @@ func LoadUserSessions(cfg *config.Config) {
data, err := os.ReadFile(cfg.GetDir() + "/sessions.yaml")
if err != nil {
logrus.WithError(err).Warn("Failed to read sessions.yaml file")
// Initialize empty session storage if file doesn't exist
if sessionStorage == nil {
sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider),
}
}
return
}
err = yaml.Unmarshal(data, &sessionStorage)
if err != nil {
logrus.WithError(err).Error("Failed to unmarshal sessions.yaml")
// Initialize empty session storage if unmarshal fails
if sessionStorage == nil {
sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider),
}
}
return
}
// Ensure sessionStorage and Providers are properly initialized
if sessionStorage == nil {
sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider),
}
}
if sessionStorage.Providers == nil {
sessionStorage.Providers = make(map[string]*SessionProvider)
}
}
func saveUserSessions(cfg *config.Config) {
out, err := yaml.Marshal(sessionStorage)
if err != nil {
logrus.WithError(err).Error("Failed to marshal session storage")
return
}
err = os.WriteFile(cfg.GetDir()+"/sessions.yaml", out, 0600)
if err != nil {
logrus.WithError(err).Error("Failed to write sessions.yaml file")
return
}
}