From 3e61e87d2bea6fe7e5d1953cd8f6fd75126695ce Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Tue, 13 Sep 2022 09:52:03 +0100
Subject: [PATCH] Attempt to fix partial config parsing issue

Using a *yaml.Node does not work.
---
 backend/backend.go       | 4 ++--
 dovecot/keyproxy.go      | 4 ++--
 dovecot/keyproxy_test.go | 7 +++----
 server/keystore.go       | 4 ++--
 4 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/backend/backend.go b/backend/backend.go
index 836e4dbf..b54e7d58 100644
--- a/backend/backend.go
+++ b/backend/backend.go
@@ -15,6 +15,6 @@ type Database interface {
 
 // Config is how users configure a database backend.
 type Config struct {
-	Type   string     `yaml:"type"`
-	Params *yaml.Node `yaml:"params"`
+	Type   string    `yaml:"type"`
+	Params yaml.Node `yaml:"params"`
 }
diff --git a/dovecot/keyproxy.go b/dovecot/keyproxy.go
index b9c13a7e..49bd1a43 100644
--- a/dovecot/keyproxy.go
+++ b/dovecot/keyproxy.go
@@ -98,9 +98,9 @@ func NewKeyLookupProxy(config *Config) (*KeyLookupProxy, error) {
 	var db backend.Database
 	switch config.Backend.Type {
 	case "ldap":
-		db, err = ldapBE.New(config.Backend.Params)
+		db, err = ldapBE.New(&config.Backend.Params)
 	case "sql":
-		db, err = sqlBE.New(config.Backend.Params)
+		db, err = sqlBE.New(&config.Backend.Params)
 	default:
 		err = errors.New("unknown backend type")
 	}
diff --git a/dovecot/keyproxy_test.go b/dovecot/keyproxy_test.go
index f5789796..68a53bdb 100644
--- a/dovecot/keyproxy_test.go
+++ b/dovecot/keyproxy_test.go
@@ -44,11 +44,10 @@ func withTestDB(t testing.TB, schema string) (func(), string) {
 	}, dbPath
 }
 
-func makeMapSlice(m map[string]interface{}) *yaml.Node {
-	var out yaml.Node
+func makeMapSlice(m map[string]interface{}) (out yaml.Node) {
 	d, _ := yaml.Marshal(m)
-	yaml.Unmarshal(d, &out)
-	return &out
+	yaml.Unmarshal(d, &out) // nolint: errcheck
+	return
 }
 
 var (
diff --git a/server/keystore.go b/server/keystore.go
index ca1a8d31..0ffcda59 100644
--- a/server/keystore.go
+++ b/server/keystore.go
@@ -106,9 +106,9 @@ func NewKeyStore(config *Config) (*KeyStore, error) {
 	var err error
 	switch config.Backend.Type {
 	case "ldap":
-		db, err = ldapBE.New(config.Backend.Params)
+		db, err = ldapBE.New(&config.Backend.Params)
 	case "sql":
-		db, err = sqlBE.New(config.Backend.Params)
+		db, err = sqlBE.New(&config.Backend.Params)
 	default:
 		err = errors.New("unknown backend type")
 	}
-- 
GitLab