driver(docker-container): fix incorrect path when writing certs

Replace invalid characters in the name of the base directory of
certificates using the name of the registry which can contain
for example a colon when the port is specified.

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2023-05-23 15:32:31 +02:00 committed by CrazyMax
parent e5f701351c
commit 1c96fdaf03
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
1 changed files with 4 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import (
"io"
"os"
"path"
"regexp"
"github.com/pelletier/go-toml"
"github.com/pkg/errors"
@ -19,6 +20,8 @@ const (
DefaultBuildKitConfigDir = "/etc/buildkit"
)
var reInvalidCertsDir = regexp.MustCompile(`[^a-zA-Z0-9.-]+`)
// LoadConfigFiles creates a temp directory with BuildKit config and
// registry certificates ready to be copied to a container.
func LoadConfigFiles(bkconfig string) (map[string][]byte, error) {
@ -60,7 +63,7 @@ func LoadConfigFiles(bkconfig string) (map[string][]byte, error) {
if regConf == nil {
continue
}
pfx := path.Join("certs", regName)
pfx := path.Join("certs", reInvalidCertsDir.ReplaceAllString(regName, "_"))
if regConf.Has("ca") {
regCAs := regConf.GetArray("ca").([]string)
if len(regCAs) > 0 {