diff options
Diffstat (limited to 'net/isc-dhcp40-server/files/patch-server::dhcpd.c')
-rw-r--r-- | net/isc-dhcp40-server/files/patch-server::dhcpd.c | 288 |
1 files changed, 0 insertions, 288 deletions
diff --git a/net/isc-dhcp40-server/files/patch-server::dhcpd.c b/net/isc-dhcp40-server/files/patch-server::dhcpd.c deleted file mode 100644 index e2e6e24e814e..000000000000 --- a/net/isc-dhcp40-server/files/patch-server::dhcpd.c +++ /dev/null @@ -1,288 +0,0 @@ ---- server/dhcpd.c.orig Thu Jun 10 19:59:52 2004 -+++ server/dhcpd.c Fri Jun 25 15:49:09 2004 -@@ -47,6 +47,22 @@ - #include "version.h" - #include <omapip/omapip_p.h> - -+#if defined (PARANOIA) -+#include <sys/types.h> -+#include <unistd.h> -+#include <pwd.h> -+/* get around the ISC declaration of group */ -+#define group real_group -+#include <grp.h> -+#undef group -+#endif /* PARANOIA */ -+#if defined (JAIL) -+#include <sys/param.h> -+#include <sys/jail.h> -+#include <netinet/in.h> -+#include <arpa/inet.h> -+#endif /* JAIL */ -+ - static void usage PROTO ((void)); - - TIME cur_time; -@@ -195,6 +211,35 @@ - omapi_object_dereference (&listener, MDL); - } - -+#if defined (PARANOIA) -+/* to be used in one of two possible scenarios */ -+static void setup_chroot (char *chroot_dir) -+{ -+ if (geteuid ()) -+ log_fatal ("you must be root to use chroot"); -+ if (chroot (chroot_dir)) -+ log_fatal ("chroot(\"%s\"): %m", chroot_dir); -+ if (chdir ("/")) -+ /* probably permission denied */ -+ log_fatal ("chdir(\"/\"): %m"); -+} -+#endif /* PARANOIA */ -+ -+#if defined (JAIL) -+static void setup_jail (char *chroot_dir, char *hostname, u_int32_t ip_number) -+{ -+ struct jail j; -+ -+ j.version = 0; -+ j.path = chroot_dir; -+ j.hostname = hostname; -+ j.ip_number = ip_number; -+ -+ if (jail (&j) < 0) -+ log_fatal ("jail(%s, %s): %m", chroot_dir, hostname); -+} -+#endif /* JAIL */ -+ - int main (argc, argv, envp) - int argc; - char **argv, **envp; -@@ -227,6 +272,25 @@ - char *traceinfile = (char *)0; - char *traceoutfile = (char *)0; - #endif -+#if defined (PARANOIA) -+ char *set_user = 0; -+ char *set_group = 0; -+ uid_t set_uid = 0; -+ gid_t set_gid = 0; -+ int early_chroot = 0; -+ int no_dhcpd_user = 0; -+ int no_dhcpd_group = 0; -+#endif /* PARANOIA */ -+#if defined (PARANOIA) || defined (JAIL) -+ char *set_chroot = 0; -+ int no_dhcpd_chroot = 0; -+#endif /* PARANOIA || JAIL */ -+#if defined (JAIL) -+ char *set_jail = 0; -+ u_int32_t jail_ip_address = 0; /* Good as long as it's IPv4 ... */ -+ int no_dhcpd_jail = 0; -+ char *s2; -+#endif /* JAIL */ - - /* Make sure we have stdin, stdout and stderr. */ - status = open ("/dev/null", O_RDWR); -@@ -289,6 +353,39 @@ - if (++i == argc) - usage (); - server = argv [i]; -+#if defined (PARANOIA) -+ } else if (!strcmp (argv [i], "-user")) { -+ if (++i == argc) -+ usage (); -+ set_user = argv [i]; -+ no_dhcpd_user = 1; -+ } else if (!strcmp (argv [i], "-group")) { -+ if (++i == argc) -+ usage (); -+ set_group = argv [i]; -+ no_dhcpd_group = 1; -+ } else if (!strcmp (argv [i], "-early_chroot")) { -+ early_chroot = 1; -+#endif /* PARANOIA */ -+#if defined (PARANOIA) || defined (JAIL) -+ } else if (!strcmp (argv [i], "-chroot")) { -+ if (++i == argc) -+ usage (); -+ set_chroot = argv [i]; -+ no_dhcpd_chroot = 1; -+#endif /* PARANOIA || JAIL */ -+#if defined (JAIL) -+ } else if (!strcmp (argv [i], "-jail")) { -+ if (++i == argc) -+ usage (); -+ set_jail = argv [i]; -+ if (++i == argc) -+ usage (); -+ if (ascii2addr (AF_INET, argv[i], &jail_ip_address) < 0) -+ log_fatal ("invalid ip address: %s", argv[i]); -+ jail_ip_address = ntohl (jail_ip_address); -+ no_dhcpd_jail = 1; -+#endif /* JAIL */ - } else if (!strcmp (argv [i], "-cf")) { - if (++i == argc) - usage (); -@@ -366,6 +463,28 @@ - if (!no_dhcpd_pid && (s = getenv ("PATH_DHCPD_PID"))) { - path_dhcpd_pid = s; - } -+#if defined (PARANOIA) -+ if (!no_dhcpd_user && (s = getenv ("DHCPD_USER"))) { -+ set_user = s; -+ } -+ if (!no_dhcpd_group && (s = getenv ("DHCPD_GROUP"))) { -+ set_group = s; -+ } -+#endif /* PARANOIA */ -+#if defined (PARANOIA) || defined (JAIL) -+ if (!no_dhcpd_chroot && (s = getenv ("PATH_DHCPD_CHROOT"))) { -+ set_chroot = s; -+ } -+#endif /* PARANOIA || JAIL */ -+#if defined (JAIL) -+ if (!no_dhcpd_jail && (s = getenv ("DHCPD_JAIL_HOSTNAME")) && -+ (s2 = getenv ("DHCPD_JAIL_IPADDRESS"))) { -+ set_jail = s; -+ if (ascii2addr (AF_INET, s2, &jail_ip_address) < 0) -+ log_fatal ("invalid ip address: %s", s2); -+ jail_ip_address = ntohl (jail_ip_address); -+ } -+#endif /* JAIL */ - - if (!quiet) { - log_info ("%s %s", message, DHCP_VERSION); -@@ -388,6 +507,57 @@ - trace_seed_stop, MDL); - #endif - -+#if defined (PARANOIA) -+ /* get user and group info if those options were given */ -+ if (set_user) { -+ struct passwd *tmp_pwd; -+ -+ if (geteuid ()) -+ log_fatal ("you must be root to set user"); -+ -+ if (!(tmp_pwd = getpwnam (set_user))) -+ log_fatal ("no such user: %s", set_user); -+ -+ set_uid = tmp_pwd->pw_uid; -+ -+ /* use the user's group as the default gid */ -+ if (!set_group) -+ set_gid = tmp_pwd->pw_gid; -+ } -+ -+ if (set_group) { -+/* get around the ISC declaration of group */ -+#define group real_group -+ struct group *tmp_grp; -+ -+ if (geteuid ()) -+ log_fatal ("you must be root to set group"); -+ -+ if (!(tmp_grp = getgrnam (set_group))) -+ log_fatal ("no such group: %s", set_group); -+ -+ set_gid = tmp_grp->gr_gid; -+#undef group -+ } -+#endif /* PARANOIA */ -+#if defined (JAIL) -+ if (set_jail) { -+ /* Initialize icmp support... */ -+ if (!cftest && !lftest) -+ icmp_startup (1, lease_pinged); -+ if(!set_chroot) -+ set_chroot = "/"; -+ setup_jail (set_chroot, set_jail, jail_ip_address); -+ } -+#endif /* JAIL */ -+#if defined (PARANOIA) && defined (JAIL) -+ else -+#endif /* PARANOIA && JAIL */ -+#if defined (PARANOIA) -+ if (early_chroot && set_chroot) -+ setup_chroot (set_chroot); -+#endif /* PARANOIA */ -+ - /* Default to the DHCP/BOOTP port. */ - if (!local_port) - { -@@ -462,6 +632,9 @@ - #endif - - /* Initialize icmp support... */ -+#if defined (JAIL) -+ if (!set_jail) -+#endif /* JAIL */ - if (!cftest && !lftest) - icmp_startup (1, lease_pinged); - -@@ -491,6 +664,14 @@ - - postconf_initialization (quiet); - -+#if defined (PARANOIA) -+#if defined (JAIL) -+ if (!set_jail) -+#endif /* JAIL */ -+ if (!early_chroot && set_chroot) -+ setup_chroot (set_chroot); -+#endif /* PARANOIA */ -+ - /* test option should cause an early exit */ - if (cftest && !lftest) - exit(0); -@@ -533,7 +714,22 @@ - else if (pid) - exit (0); - } -+ -+#if defined (PARANOIA) -+ /* change uid to the specified one */ -+ if (set_gid) { -+ if (setgroups (0, (void *)0)) -+ log_fatal ("setgroups: %m"); -+ if (setgid (set_gid)) -+ log_fatal ("setgid(%d): %m", (int) set_gid); -+ } - -+ if (set_uid) { -+ if (setuid (set_uid)) -+ log_fatal ("setuid(%d): %m", (int) set_uid); -+ } -+#endif /* PARANOIA */ -+ - /* Read previous pid file. */ - if ((i = open (path_dhcpd_pid, O_RDONLY)) >= 0) { - status = read (i, pbuf, (sizeof pbuf) - 1); -@@ -877,8 +1073,24 @@ - log_info (copyright); - log_info (arr); - -- log_fatal ("Usage: dhcpd [-p <UDP port #>] [-d] [-f]%s%s%s%s", -+ log_fatal ("Usage: dhcpd [-p <UDP port #>] [-d] [-f]%s%s%s%s%s%s%s", - "\n [-cf config-file] [-lf lease-file]", -+ -+#if defined (PARANOIA) -+ /* meld into the following string */ -+ "\n [-user user] [-group group]", -+ "\n [-chroot dir] [-early_chroot]", -+#else /* PARANOIA */ -+ "", "", -+#endif /* PARANOIA */ -+ -+#if defined (JAIL) -+ /* then also these ones */ -+ "\n [-jail name ip]", -+#else /* JAIL */ -+ "", -+#endif /* JAIL */ -+ - #if defined (TRACING) - "\n [-tf trace-output-file]", - "\n [-play trace-input-file]", |