$NetBSD: patch-ab,v 1.2 2006/08/16 12:50:23 jsonn Exp $ --- ftpsesame.c.orig 2004-10-05 12:07:24.000000000 +0000 +++ ftpsesame.c @@ -19,14 +19,25 @@ #include #include -#include +#if defined(__DragonFly__) +#include +#else #include -#include +#endif + #include #include #include +#include #include #include + +#if defined(__DragonFly__) +#include +#else +#include +#endif + #include #include @@ -34,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +58,7 @@ #include "state.h" #define NOPRIV_USER "proxy" -#define CHROOT_DIR "/var/empty" +#define CHROOT_DIR "/var/chroot/proxy" #define PCAP_TO_MS 500 #define PURGE_INTERVAL 60 @@ -515,14 +527,18 @@ main(int argc, char **argv) errx(1, "filter '%s': %s", filter, pcap_geterr(hpcap)); immediate = 1; +#ifdef BIOCIMMEDIATE if (ioctl(pcap_fileno(hpcap), BIOCIMMEDIATE, &immediate) < 0) err(1, "BIOCIMMEDIATE"); +#endif wfilter.bf_len = 1; wfilter.bf_insns = blockall; +#ifdef __OpenBSD__ if (ioctl(pcap_fileno(hpcap), BIOCSETWF, &wfilter) < 0) err(1, "BIOCSETWF"); if (ioctl(pcap_fileno(hpcap), BIOCLOCK) < 0) err(1, "BIOCLOCK"); +#endif if (daemonize) { if (daemon(0, 0) == -1) @@ -626,10 +642,16 @@ drop_privs(void) chdir("/"); gidset[0] = pw->pw_gid; +#ifdef __OpenBSD__ if (setgroups(1, gidset) == -1 || setegid(pw->pw_gid) == -1 || setgid(pw->pw_gid) == -1 || seteuid(pw->pw_uid) == -1 || setuid(pw->pw_uid) == -1) return (0); +#else + if (setgroups(1, gidset) == -1 || setgid(pw->pw_gid) == -1 || + setuid(pw->pw_uid) == -1) + return (0); +#endif return (1); } @@ -663,7 +685,7 @@ sig_close(int sig) gotsig_close = 1; } -__dead void +void usage(void) { fprintf(stderr, "usage: %s [-d] [-D level] [-i interface] " \