diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-08-03 21:08:11 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-08-03 21:08:11 +0200 |
| commit | f557fcdfa65168964b74fa56ab8b940c39b74143 (patch) | |
| tree | acce532df8521a4ee3eb46474598e13552129a65 /vm | |
| parent | 2763e04c22143367e0b613ac612c537b6d94d2c9 (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.go | 6 |
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 } |
