Skip to content

Commit d3f7641

Browse files
authored
fix(iaas): prevent nil pointer dereference on empty volume name (#799)
relates to STACKITCLI-208
1 parent 056ae2e commit d3f7641

File tree

19 files changed

+173
-67
lines changed

19 files changed

+173
-67
lines changed

internal/cmd/affinity-groups/delete/delete.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/spf13/cobra"
88
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
99
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
10-
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
10+
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1111
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
@@ -93,7 +93,7 @@ func buildRequest(ctx context.Context, model inputModel, apiClient *iaas.APIClie
9393
func parseInput(p *print.Printer, cmd *cobra.Command, cliArgs []string) (*inputModel, error) {
9494
globalFlags := globalflags.Parse(p, cmd)
9595
if globalFlags.ProjectId == "" {
96-
return nil, &errors.ProjectIdError{}
96+
return nil, &cliErr.ProjectIdError{}
9797
}
9898

9999
model := inputModel{

internal/cmd/image/delete/delete.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/spf13/cobra"
88
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
99
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
10-
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
10+
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1111
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
@@ -57,8 +57,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
5757
if err != nil {
5858
params.Printer.Debug(print.ErrorLevel, "get image name: %v", err)
5959
imageName = model.ImageId
60-
} else if imageName == "" {
61-
imageName = model.ImageId
6260
}
6361

6462
if !model.AssumeYes {
@@ -87,7 +85,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
8785
func parseInput(p *print.Printer, cmd *cobra.Command, cliArgs []string) (*inputModel, error) {
8886
globalFlags := globalflags.Parse(p, cmd)
8987
if globalFlags.ProjectId == "" {
90-
return nil, &errors.ProjectIdError{}
88+
return nil, &cliErr.ProjectIdError{}
9189
}
9290

9391
model := inputModel{

internal/cmd/image/update/update.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/spf13/cobra"
88
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
99
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
10-
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
10+
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1111
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
@@ -135,8 +135,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
135135
if err != nil {
136136
params.Printer.Debug(print.WarningLevel, "cannot retrieve image name: %v", err)
137137
imageLabel = model.Id
138-
} else if imageLabel == "" {
139-
imageLabel = model.Id
140138
}
141139

142140
if !model.AssumeYes {
@@ -194,7 +192,7 @@ func configureFlags(cmd *cobra.Command) {
194192
func parseInput(p *print.Printer, cmd *cobra.Command, cliArgs []string) (*inputModel, error) {
195193
globalFlags := globalflags.Parse(p, cmd)
196194
if globalFlags.ProjectId == "" {
197-
return nil, &errors.ProjectIdError{}
195+
return nil, &cliErr.ProjectIdError{}
198196
}
199197

200198
model := inputModel{

internal/cmd/network-area/delete/delete.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6363
if err != nil {
6464
params.Printer.Debug(print.ErrorLevel, "get network area name: %v", err)
6565
networkAreaLabel = model.AreaId
66-
} else if networkAreaLabel == "" {
67-
networkAreaLabel = model.AreaId
6866
}
6967

7068
if !model.AssumeYes {

internal/cmd/network-area/describe/describe.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package describe
33
import (
44
"context"
55
"encoding/json"
6+
"errors"
67
"fmt"
78
"strings"
89

@@ -79,7 +80,9 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
7980

8081
if model.ShowAttachedProjects {
8182
projects, err = iaasUtils.ListAttachedProjects(ctx, apiClient, *model.OrganizationId, model.AreaId)
82-
if err != nil {
83+
if err != nil && errors.Is(err, iaasUtils.ErrItemsNil) {
84+
projects = []string{}
85+
} else if err != nil {
8386
return fmt.Errorf("get attached projects: %w", err)
8487
}
8588
}

internal/cmd/network-area/network-range/delete/delete.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6161
if err != nil {
6262
params.Printer.Debug(print.ErrorLevel, "get network area name: %v", err)
6363
networkAreaLabel = *model.NetworkAreaId
64-
} else if networkAreaLabel == "" {
65-
networkAreaLabel = *model.NetworkAreaId
6664
}
6765
networkRangeLabel, err := iaasUtils.GetNetworkRangePrefix(ctx, apiClient, *model.OrganizationId, *model.NetworkAreaId, model.NetworkRangeId)
6866
if err != nil {

internal/cmd/network-area/network-range/list/list.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"github.com/goccy/go-yaml"
99
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
1010
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
11-
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
11+
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
@@ -81,8 +81,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
8181
if err != nil {
8282
params.Printer.Debug(print.ErrorLevel, "get organization name: %v", err)
8383
networkAreaLabel = *model.NetworkAreaId
84-
} else if networkAreaLabel == "" {
85-
networkAreaLabel = *model.NetworkAreaId
8684
}
8785
params.Printer.Info("No network ranges found for SNA %q\n", networkAreaLabel)
8886
return nil
@@ -114,7 +112,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command) (*inputModel, error) {
114112
globalFlags := globalflags.Parse(p, cmd)
115113
limit := flags.FlagToInt64Pointer(p, cmd, limitFlag)
116114
if limit != nil && *limit < 1 {
117-
return nil, &errors.FlagValidationError{
115+
return nil, &cliErr.FlagValidationError{
118116
Flag: limitFlag,
119117
Details: "must be greater than 0",
120118
}

internal/cmd/network-area/route/create/create.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
7474
if err != nil {
7575
params.Printer.Debug(print.ErrorLevel, "get network area name: %v", err)
7676
networkAreaLabel = *model.NetworkAreaId
77-
} else if networkAreaLabel == "" {
78-
networkAreaLabel = *model.NetworkAreaId
7977
}
8078

8179
if !model.AssumeYes {

internal/cmd/network-area/route/delete/delete.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6161
if err != nil {
6262
params.Printer.Debug(print.ErrorLevel, "get network area name: %v", err)
6363
networkAreaLabel = *model.NetworkAreaId
64-
} else if networkAreaLabel == "" {
65-
networkAreaLabel = *model.NetworkAreaId
6664
}
6765

6866
if !model.AssumeYes {

internal/cmd/network-area/route/list/list.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/spf13/cobra"
1010
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
1111
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
12-
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
12+
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
1515
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
@@ -80,8 +80,6 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
8080
if err != nil {
8181
params.Printer.Debug(print.ErrorLevel, "get network area name: %v", err)
8282
networkAreaLabel = *model.NetworkAreaId
83-
} else if networkAreaLabel == "" {
84-
networkAreaLabel = *model.NetworkAreaId
8583
}
8684
params.Printer.Info("No static routes found for STACKIT Network Area %q\n", networkAreaLabel)
8785
return nil
@@ -113,7 +111,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command) (*inputModel, error) {
113111
globalFlags := globalflags.Parse(p, cmd)
114112
limit := flags.FlagToInt64Pointer(p, cmd, limitFlag)
115113
if limit != nil && *limit < 1 {
116-
return nil, &errors.FlagValidationError{
114+
return nil, &cliErr.FlagValidationError{
117115
Flag: limitFlag,
118116
Details: "must be greater than 0",
119117
}

0 commit comments

Comments
 (0)