From dca7a6f98b9927b852aaee81de63769ecb3c00f2 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 26 Mar 2019 03:31:28 -0700 Subject: [PATCH] config: validate proxy path Like shim, we should validate the proxy path if it is provided. Fixes: #1424 Signed-off-by: Peng Tao --- pkg/katautils/config.go | 16 ++++++++++----- pkg/katautils/config_test.go | 38 ++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/pkg/katautils/config.go b/pkg/katautils/config.go index 7d812f0662..1e60541928 100644 --- a/pkg/katautils/config.go +++ b/pkg/katautils/config.go @@ -357,12 +357,13 @@ func (h hypervisor) getInitrdAndImage() (initrd string, image string, err error) return } -func (p proxy) path() string { - if p.Path == "" { - return defaultProxyPath +func (p proxy) path() (string, error) { + path := p.Path + if path == "" { + path = defaultProxyPath } - return p.Path + return ResolvePath(path) } func (p proxy) debug() bool { @@ -606,8 +607,13 @@ func updateRuntimeConfigProxy(configPath string, tomlConf tomlConfig, config *oc config.ProxyType = vc.KataProxyType } + path, err := proxy.path() + if err != nil { + return err + } + config.ProxyConfig = vc.ProxyConfig{ - Path: proxy.path(), + Path: path, Debug: proxy.debug(), } } diff --git a/pkg/katautils/config_test.go b/pkg/katautils/config_test.go index 545dd11623..d33ab2958e 100644 --- a/pkg/katautils/config_test.go +++ b/pkg/katautils/config_test.go @@ -1122,13 +1122,43 @@ func TestHypervisorDefaultsGuestHookPath(t *testing.T) { } func TestProxyDefaults(t *testing.T) { + assert := assert.New(t) + + tmpdir, err := ioutil.TempDir(testDir, "") + assert.NoError(err) + defer os.RemoveAll(tmpdir) + + testProxyPath := filepath.Join(tmpdir, "proxy") + testProxyLinkPath := filepath.Join(tmpdir, "proxy-link") + + err = createEmptyFile(testProxyPath) + assert.NoError(err) + + err = syscall.Symlink(testProxyPath, testProxyLinkPath) + assert.NoError(err) + + savedProxyPath := defaultProxyPath + + defer func() { + defaultProxyPath = savedProxyPath + }() + + defaultProxyPath = testProxyPath p := proxy{} + path, err := p.path() + assert.NoError(err) + assert.Equal(path, defaultProxyPath, "default proxy path wrong") - assert.Equal(t, p.path(), defaultProxyPath, "default proxy path wrong") + // test path resolution + defaultProxyPath = testProxyLinkPath + p = proxy{} + path, err = p.path() + assert.NoError(err) + assert.Equal(path, testProxyPath) - path := "/foo/bar/baz/proxy" - p.Path = path - assert.Equal(t, p.path(), path, "custom proxy path wrong") + assert.False(p.debug()) + p.Debug = true + assert.True(p.debug()) } func TestShimDefaults(t *testing.T) {