$OpenBSD: patch-main_c,v 1.2 2008/02/03 15:06:48 kili Exp $ --- main.c.orig Tue Mar 6 20:29:05 2007 +++ main.c Sun May 27 07:45:45 2007 @@ -126,6 +126,24 @@ main(int argc, char **argv) i++; } + if (geteuid() == 0) { + /* We are root; drop privileges to POLIPO_USER */ + struct passwd *pw; + + if ((pw = getpwnam(POLIPO_USER)) == NULL) { + do_log(L_ERROR, "No user %s.\n", POLIPO_USER); + exit(1); + } + + if (setgroups(1, &pw->pw_gid) || + setegid(pw->pw_gid) || setgid(pw->pw_gid) || + seteuid(pw->pw_uid) || setuid(pw->pw_uid)) { + do_log(L_ERROR, "Can't drop privileges.\n"); + exit(1); + } + endpwent(); + } + initChunks(); initLog(); initObject();