diff -Naur old/Makefile.in new/Makefile.in
--- old/Makefile.in	2007-09-13 10:56:00.000000000 -0700
+++ new/Makefile.in	2008-02-03 04:07:13.000000000 -0800
@@ -1,11 +1,9 @@
 #CC = gcc -Wall -Wpointer-arith -Wstrict-prototypes -pedantic
 CC = @CC@
-dnslib = -lnss_dns
 objects = log.o nstrl.o util.o chroot.o pidfile.o signals.o strlist.o checkip.o $(PLATFORM).o cfg.o ndyndns.o
-CURLINC = @CURLINC@
 CURLLIB = @CURLLIB@
 VERSION = @VERSION@
-CFLAGS = @CFLAGS@ -Wall -Wpointer-arith -Wstrict-prototypes -pedantic $(CURLINC)
+CFLAGS += -Wall -Wpointer-arith -Wstrict-prototypes -pedantic
 PLATFORM = @PLATFORM@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
@@ -16,7 +14,7 @@
 all: ndyndns
 
 ndyndns : $(objects)
-	$(CC) $(LDFLAGS) $(dnslib) $(CURLLIB) -o ndyndns $(objects)
+	$(CC) $(LDFLAGS) $(CURLLIB) -o ndyndns $(objects)
 
 ndyndns.o : log.h nstrl.h util.h chroot.h pidfile.h signals.h strlist.h checkip.h $(PLATFORM).h cfg.h
 	$(CC) $(CFLAGS) -c -o $@ ndyndns.c
diff -Naur old/chroot.c new/chroot.c
--- old/chroot.c	2007-03-13 15:54:12.000000000 -0700
+++ new/chroot.c	2008-02-03 04:10:21.000000000 -0800
@@ -18,8 +18,6 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
-#include <pwd.h>
-#include <grp.h>
 
 #include "defines.h"
 #include "log.h"
@@ -60,24 +58,4 @@
 		log_line("Failed to chdir(%s).  Not invoking job.", path);
 		exit(EXIT_FAILURE);
 	}
-
-	ret = chroot(path);
-	if (ret) {
-		log_line("Failed to chroot(%s).  Not invoking job.", path);
-		exit(EXIT_FAILURE);
-	}
 }
-
-void drop_root(uid_t uid, gid_t gid)
-{
-    if (uid == 0 || gid == 0) {
-        log_line("FATAL - drop_root: attempt to drop root to root?\n");
-        exit(EXIT_FAILURE);
-    }
-
-    if (setregid(gid, gid) == -1 || setreuid(uid, uid) == -1) {
-        log_line("FATAL - drop_root: failed to drop root!\n");
-        exit(EXIT_FAILURE);
-    }
-}
-
diff -Naur old/ndyndns.c new/ndyndns.c
--- old/ndyndns.c	2007-09-19 00:04:13.000000000 -0700
+++ new/ndyndns.c	2008-02-03 04:10:21.000000000 -0800
@@ -32,8 +32,6 @@
 #include <net/if.h>
 #include <ctype.h>
 #include <time.h>
-#include <pwd.h>
-#include <grp.h>
 
 #include <signal.h>
 #include <errno.h>
@@ -728,12 +726,9 @@
 }
 
 int main(int argc, char** argv) {
-  int c, t, uid = 0, gid = 0;
+  int c, t;
   char pidfile[MAX_PATH_LENGTH] = PID_FILE_DEFAULT;
   char conffile[MAX_PATH_LENGTH] = CONF_FILE_DEFAULT;
-  char *p;
-  struct passwd *pws;
-  struct group *grp;
 
 
   while (1) {
@@ -745,8 +740,6 @@
       {"quiet", 0, 0, 'q'},
       {"chroot", 1, 0, 'c'},
       {"file", 1, 0, 'f'},
-      {"user", 1, 0, 'u'},
-      {"group", 1, 0, 'g'},
       {"interface", 1, 0, 'i'},
       {"remote", 0, 0, 'r'},
       {"help", 0, 0, 'h'},
@@ -754,7 +747,7 @@
       {0, 0, 0, 0}
     };
 
-    c = getopt_long (argc, argv, "rdnp:qc:f:u:g:i:hv", long_options, &option_index);
+    c = getopt_long (argc, argv, "rdnp:qc:f:i:hv", long_options, &option_index);
     if (c == -1) break;
 
     switch (c) {
@@ -771,8 +764,6 @@
 "  -f, --file                  configuration file\n"
 "  -p, --pidfile               pidfile path\n");
             printf(
-"  -u, --user                  user name that ndyndns should run as\n"
-"  -g, --group                 group name that ndyndns should run as\n"
 "  -i, --interface             interface ip to check (default: ppp0)\n"
 "  -r, --remote                get ip from remote dyndns host (overrides -i)\n"
 "  -h, --help                  print this help and exit\n"
@@ -817,39 +808,12 @@
             strlcpy(pidfile, optarg, sizeof pidfile);
             break;
 
-        case 'u':
-            t = (unsigned int) strtol(optarg, &p, 10);
-            if (*p != '\0') {
-                pws = getpwnam(optarg);
-                if (pws) {
-                    uid = (int)pws->pw_uid;
-                    if (!gid)
-                        gid = (int)pws->pw_gid;
-                } else suicide("FATAL - Invalid uid specified.\n");
-            } else
-                uid = t;
-            break;
-
-        case 'g':
-            t = (unsigned int) strtol(optarg, &p, 10);
-            if (*p != '\0') {
-                grp = getgrnam(optarg);
-                if (grp) {
-                    gid = (int)grp->gr_gid;
-                } else suicide("FATAL - Invalid gid specified.\n");
-            } else
-                gid = t;
-            break;
-
 	case 'i':
 		strlcpy(ifname, optarg, sizeof ifname);
 		break;
     }
   }
 
-  if (getuid())
-      suicide("FATAL - I need root for chroot!\n");
-
   if (gflags_detach)
 	if (daemon(0,0))
 		suicide("FATAL - detaching fork failed\n");
@@ -870,7 +834,6 @@
 
   /* Note that failure cases are handled by called fns. */
   imprison(get_chroot());
-  drop_root(uid, gid);
 
   /* Cover our tracks... */
   wipe_chroot();