diff options
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/csource/csource.go | 5 | ||||
| -rw-r--r-- | pkg/ipc/ipc.go | 11 |
2 files changed, 7 insertions, 9 deletions
diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go index 96237e64b..3d019a59c 100644 --- a/pkg/csource/csource.go +++ b/pkg/csource/csource.go @@ -239,12 +239,11 @@ func (ctx *context) generateSyscallDefines() string { } func (ctx *context) generateProgCalls(p *prog.Prog, trace bool) ([]string, []uint64, error) { - exec := make([]byte, prog.ExecBufferSize) - progSize, err := p.SerializeForExec(exec) + exec, err := p.SerializeForExec() if err != nil { return nil, nil, fmt.Errorf("failed to serialize program: %w", err) } - decoded, err := ctx.target.DeserializeExec(exec[:progSize], nil) + decoded, err := ctx.target.DeserializeExec(exec, nil) if err != nil { return nil, nil, err } diff --git a/pkg/ipc/ipc.go b/pkg/ipc/ipc.go index 536b494e7..ea2e22569 100644 --- a/pkg/ipc/ipc.go +++ b/pkg/ipc/ipc.go @@ -185,7 +185,6 @@ func MakeEnv(config *Config, pid int) (*Env, error) { } }() } else { - inmem = make([]byte, prog.ExecBufferSize) outmem = make([]byte, outputSize) } env := &Env{ @@ -254,15 +253,15 @@ func (env *Env) Close() error { // hanged: program hanged and was killed // err0: failed to start the process or bug in executor itself. func (env *Env) Exec(opts *ExecOpts, p *prog.Prog) (output []byte, info *ProgInfo, hanged bool, err0 error) { - // Copy-in serialized program. - progSize, err := p.SerializeForExec(env.in) + progData, err := p.SerializeForExec() if err != nil { err0 = err return } - var progData []byte - if !env.config.UseShmem { - progData = env.in[:progSize] + // Copy-in serialized program. + if env.config.UseShmem { + copy(env.in, progData) + progData = nil } // Zero out the first two words (ncmd and nsig), so that we don't have garbage there // if executor crashes before writing non-garbage there. |
