aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/fshim/ipc/payload.go
blob: f6b0c926722c1b57bac9e9b1b33dfc0bfedd688b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package shim0

import (
	"encoding/gob"
	"net"

	"git.ophivana.moe/security/fortify/helper/bwrap"
	"git.ophivana.moe/security/fortify/internal/fmsg"
)

const Env = "FORTIFY_SHIM"

type Payload struct {
	// child full argv
	Argv []string
	// bwrap, target full exec path
	Exec [2]string
	// bwrap config
	Bwrap *bwrap.Config
	// sync fd
	Sync *uintptr

	// verbosity pass through
	Verbose bool
}

func (p *Payload) Serve(conn *net.UnixConn) error {
	if err := gob.NewEncoder(conn).Encode(*p); err != nil {
		return fmsg.WrapErrorSuffix(err,
			"cannot stream shim payload:")
	}

	return fmsg.WrapErrorSuffix(conn.Close(),
		"cannot close setup connection:")
}