Portable build framework for OpenNTPD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
1.0 KiB

  1. From f478e7be28896cd6e42622a72c691b0f56b01aa9 Mon Sep 17 00:00:00 2001
  2. From: Brent Cook <busterb@gmail.com>
  3. Date: Thu, 1 Jan 2015 13:26:29 -0600
  4. Subject: [PATCH 07/16] do not allow privsep user to be a privileged user
  5. This may need to be a function call for different platforms with
  6. different capability / privilege mechanisms.
  7. ---
  8. src/usr.sbin/ntpd/ntp.c | 6 ++++++
  9. 1 file changed, 6 insertions(+)
  10. diff --git a/src/usr.sbin/ntpd/ntp.c b/src/usr.sbin/ntpd/ntp.c
  11. index 26701c8..a24f305 100644
  12. --- a/src/usr.sbin/ntpd/ntp.c
  13. +++ b/src/usr.sbin/ntpd/ntp.c
  14. @@ -147,6 +147,12 @@ ntp_main(int pipe_prnt[2], int fd_ctl, struct ntpd_conf *nconf,
  15. conf = nconf;
  16. setup_listeners(se, conf, &listener_cnt);
  17. + if (pw->pw_uid == 0 || pw->pw_gid == 0)
  18. + fatal("privsep user cannot be root");
  19. +
  20. + if (pw->pw_uid == geteuid() || pw->pw_gid == getegid())
  21. + fatal("privsep user cannot be the privileged user");
  22. +
  23. if (setgroups(1, &pw->pw_gid) ||
  24. setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) ||
  25. setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid))
  26. --
  27. 1.9.1