aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-03 21:08:11 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-03 21:08:11 +0200
commitf557fcdfa65168964b74fa56ab8b940c39b74143 (patch)
treeacce532df8521a4ee3eb46474598e13552129a65 /vm
parent2763e04c22143367e0b613ac612c537b6d94d2c9 (diff)
vm/gvisor: fix current binary lookup
os.Args[0] can be just binary name which was looked up using $PATH. In such case copy will fail because the path does not exist. Lookup binary name using $PATH.
Diffstat (limited to 'vm')
-rw-r--r--vm/gvisor/gvisor.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/vm/gvisor/gvisor.go b/vm/gvisor/gvisor.go
index f07744303..15563355d 100644
--- a/vm/gvisor/gvisor.go
+++ b/vm/gvisor/gvisor.go
@@ -94,7 +94,11 @@ func (pool *Pool) Create(workdir string, index int) (vmimpl.Instance, error) {
if err := osutil.WriteFile(filepath.Join(bundleDir, "config.json"), []byte(vmConfig)); err != nil {
return nil, err
}
- if err := osutil.CopyFile(os.Args[0], filepath.Join(imageDir, "init")); err != nil {
+ bin, err := exec.LookPath(os.Args[0])
+ if err != nil {
+ return nil, fmt.Errorf("failed to lookup %v: %v", os.Args[0], err)
+ }
+ if err := osutil.CopyFile(bin, filepath.Join(imageDir, "init")); err != nil {
return nil, err
}