From baf1ab42017e522b98e4d82150259aa6e5ba0427 Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Thu, 1 Mar 2007 21:14:51 +0000 Subject: [PATCH] move chrooting to common.c --- src/common.c | 11 +++++++++++ src/common.h | 2 ++ src/iodine.c | 8 +------- src/iodined.c | 7 +------ 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/common.c b/src/common.c index 2482084..be5b744 100644 --- a/src/common.c +++ b/src/common.c @@ -67,3 +67,14 @@ close_dns(int fd) close(fd); } +void +do_chroot(char *newroot) +{ + if (newroot) { + if (chroot(newroot) != 0 || chdir("/") != 0) + err(1, "%s", newroot); + + seteuid(geteuid()); + setuid(getuid()); + } +} diff --git a/src/common.h b/src/common.h index ee97e1f..b3e1dd3 100644 --- a/src/common.h +++ b/src/common.h @@ -45,4 +45,6 @@ struct query { int open_dns(int, in_addr_t); void close_dns(int); +void do_chroot(char *); + #endif diff --git a/src/iodine.c b/src/iodine.c index 8ba9255..cfca361 100644 --- a/src/iodine.c +++ b/src/iodine.c @@ -568,13 +568,7 @@ main(int argc, char **argv) printf("Sending queries for %s to %s\n", argv[1], argv[0]); - if (newroot) { - if (chroot(newroot) != 0 || chdir("/") != 0) - err(1, "%s", newroot); - - seteuid(geteuid()); - setuid(getuid()); - } + do_chroot(newroot); if (!foreground) { printf("Detaching from terminal...\n"); diff --git a/src/iodined.c b/src/iodined.c index da90f99..7245604 100644 --- a/src/iodined.c +++ b/src/iodined.c @@ -535,12 +535,7 @@ main(int argc, char **argv) printf("Listening to dns for domain %s\n", argv[1]); - if (newroot) { - if (chroot(newroot) != 0 || chdir("/") != 0) - err(1, "%s", newroot); - seteuid(geteuid()); - setuid(getuid()); - } + do_chroot(newroot); if (!foreground) { printf("Detaching from terminal...\n");