m/c/metroctl/install: fix custom NodeParameters

Unmarshaling into a nil pointer panics, use a locally-allocated variable
instead.

Change-Id: I0b00df6d6b06aaf662ddf93f996df804b8bbef5f
Reviewed-on: https://review.monogon.dev/c/monogon/+/4390
Tested-by: Jenkins CI
Reviewed-by: Jan Schär <jan@monogon.tech>
diff --git a/metropolis/cli/metroctl/cmd_install.go b/metropolis/cli/metroctl/cmd_install.go
index 3fd4802..c6e76dd 100644
--- a/metropolis/cli/metroctl/cmd_install.go
+++ b/metropolis/cli/metroctl/cmd_install.go
@@ -46,17 +46,17 @@
 		return nil, fmt.Errorf("failed to create config directory: %w", err)
 	}
 
-	var params *api.NodeParameters
+	var params api.NodeParameters
 	if *nodeParamPath != "" {
 		nodeParamsRaw, err := os.ReadFile(*nodeParamPath)
 		if err != nil {
 			return nil, fmt.Errorf("failed to read node-params file: %w", err)
 		}
-		if err := prototext.Unmarshal(nodeParamsRaw, params); err != nil {
+		if err := prototext.Unmarshal(nodeParamsRaw, &params); err != nil {
 			return nil, fmt.Errorf("failed to parse node-params: %w", err)
 		}
 	} else {
-		params = &api.NodeParameters{}
+		params = api.NodeParameters{}
 	}
 
 	if *bootstrap {
@@ -106,7 +106,7 @@
 			},
 		}
 	}
-	return params, nil
+	return &params, nil
 }
 
 func external(name, datafilePath string, flag *string) (string, error) {