mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-26 01:53:42 +01:00
Fix nil pointer exception in config parser (#702)
In config reader if the input.PreSharedKey is nil then the GetConfig throw nil pointer exception
This commit is contained in:
parent
c3ed08c249
commit
d8429c5c34
@ -242,13 +242,12 @@ func GetConfig(input ConfigInput) (*Config, error) {
|
|||||||
if _, err := os.Stat(input.ConfigPath); os.IsNotExist(err) {
|
if _, err := os.Stat(input.ConfigPath); os.IsNotExist(err) {
|
||||||
log.Infof("generating new config %s", input.ConfigPath)
|
log.Infof("generating new config %s", input.ConfigPath)
|
||||||
return createNewConfig(input)
|
return createNewConfig(input)
|
||||||
} else {
|
|
||||||
// don't overwrite pre-shared key if we receive asterisks from UI
|
|
||||||
if *input.PreSharedKey == "**********" {
|
|
||||||
input.PreSharedKey = nil
|
|
||||||
}
|
|
||||||
return ReadConfig(input)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isPreSharedKeyHidden(input.PreSharedKey) {
|
||||||
|
input.PreSharedKey = nil
|
||||||
|
}
|
||||||
|
return ReadConfig(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateKey generates a new Wireguard private key
|
// generateKey generates a new Wireguard private key
|
||||||
@ -364,3 +363,11 @@ func isProviderConfigValid(config ProviderConfig) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// don't overwrite pre-shared key if we receive asterisks from UI
|
||||||
|
func isPreSharedKeyHidden(preSharedKey *string) bool {
|
||||||
|
if preSharedKey != nil && *preSharedKey == "**********" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
@ -85,3 +85,40 @@ func TestGetConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
assert.Equal(t, readConf.(*Config).ManagementURL.String(), newManagementURL)
|
assert.Equal(t, readConf.(*Config).ManagementURL.String(), newManagementURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHiddenPreSharedKey(t *testing.T) {
|
||||||
|
hidden := "**********"
|
||||||
|
samplePreSharedKey := "mysecretpresharedkey"
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
preSharedKey *string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"nil", nil, ""},
|
||||||
|
{"hidden", &hidden, ""},
|
||||||
|
{"filled", &samplePreSharedKey, samplePreSharedKey},
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate default cfg
|
||||||
|
cfgFile := filepath.Join(t.TempDir(), "config.json")
|
||||||
|
_, _ = GetConfig(ConfigInput{
|
||||||
|
ConfigPath: cfgFile,
|
||||||
|
})
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
cfg, err := GetConfig(ConfigInput{
|
||||||
|
ConfigPath: cfgFile,
|
||||||
|
PreSharedKey: tt.preSharedKey,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to get cfg: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.PreSharedKey != tt.want {
|
||||||
|
t.Fatalf("invalid preshared key: '%s', expected: '%s' ", cfg.PreSharedKey, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user