Skip to content

Commit 7a156ae

Browse files
authored
Fix nil pointer dereference in nginx installer (#10)
- Add proper error handling for missing web configuration - Initialize default WebConfig when config.GetStruct fails - Add nil check for webConfig.Sites before iteration - Prevent panic when "web" configuration path doesn't exist Fixes #9
1 parent 292b1ea commit 7a156ae

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

internal/installers/nginx/installer.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,16 @@ func (installer *NginxInstaller) Uninstall() error {
4343
installer.Spinner.UpdatePhrase("Uninstalling Web Components...")
4444

4545
var webConfig *config.WebConfig
46-
config.GetStruct("web", &webConfig)
46+
err := config.GetStruct("web", &webConfig)
47+
if err != nil || webConfig == nil {
48+
webConfig = &config.WebConfig{}
49+
}
4750

48-
for _, site := range webConfig.Sites {
49-
sm, _ := manager.NewSiteManager()
50-
sm.RemoveSite(site.Domain)
51+
if webConfig.Sites != nil {
52+
for _, site := range webConfig.Sites {
53+
sm, _ := manager.NewSiteManager()
54+
sm.RemoveSite(site.Domain)
55+
}
5156
}
5257

5358
utils.SystemdStopService("yerd-nginx")
@@ -68,14 +73,17 @@ func (installer *NginxInstaller) Install() error {
6873
installer.Spinner.Start()
6974

7075
var webConfig *config.WebConfig
71-
config.GetStruct("web", &webConfig)
76+
err := config.GetStruct("web", &webConfig)
77+
if err != nil || webConfig == nil {
78+
webConfig = &config.WebConfig{Installed: false}
79+
}
7280

7381
if webConfig.Installed {
7482
installer.Spinner.StopWithError("Web Components are already installed")
7583
return fmt.Errorf("already installed")
7684
}
7785

78-
err := utils.RunAll(
86+
err = utils.RunAll(
7987
func() error { return installer.installDependencies() },
8088
func() error { return installer.prepareInstall() },
8189
func() error { return installer.downloadSource() },

0 commit comments

Comments
 (0)