Skip to content

Commit

Permalink
Use pledge(2) on OpenBSD
Browse files Browse the repository at this point in the history
Straight forward thanks to all privileged operations being done early
enough during startup.
  • Loading branch information
klemensn committed Dec 21, 2024
1 parent 213f72b commit 7a0ed69
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions cmd/yggdrasil/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,21 @@ func main() {
}
}

// Promise final modes of operation. At this point, if at all:
// - raw socket is created/open
// - admin socket is created/open
// - privileges are dropped to non-root user
//
// Peers, InterfacePeers, Listen can be UNIX sockets;
// Go's net.Listen.Close() deletes files on shutdown.
promises := []string{"stdio", "cpath", "inet", "unix", "dns"}
if len(cfg.MulticastInterfaces) > 0 {
promises = append(promises, "mcast")
}
if err := protect.Pledge(strings.Join(promises, " ")); err != nil {
panic(fmt.Sprintf("pledge: %v: %v", promises, err))
}

// Block until we are told to shut down.
<-ctx.Done()

Expand Down

0 comments on commit 7a0ed69

Please sign in to comment.