Skip to content

Commit

Permalink
Use pledge(2) on OpenBSD (#1215)
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 authored Dec 22, 2024
1 parent 213f72b commit 782c025
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 782c025

Please sign in to comment.