diff -Nurd linux-2.2.19.orig/include/net/sock.h linux-2.2.19/include/net/sock.h --- linux-2.2.19.orig/include/net/sock.h Sun Mar 25 17:31:07 2001 +++ linux-2.2.19/include/net/sock.h Thu Aug 16 13:41:57 2001 @@ -608,6 +608,10 @@ /* Sockets 0-1023 can't be bound to unless you are superuser */ #define PROT_SOCK 1024 +/* Socket 80 & 443 can be bound to by anyone */ +#define PROT_SOCK_WEB 80 +#define PROT_SOCK_SWEB 443 + #define SHUTDOWN_MASK 3 #define RCV_SHUTDOWN 1 #define SEND_SHUTDOWN 2 diff -Nurd linux-2.2.19.orig/net/ipv4/af_inet.c linux-2.2.19/net/ipv4/af_inet.c --- linux-2.2.19.orig/net/ipv4/af_inet.c Sun Mar 25 17:31:12 2001 +++ linux-2.2.19/net/ipv4/af_inet.c Thu Aug 16 13:42:16 2001 @@ -545,7 +545,9 @@ chk_addr_ret != RTN_MULTICAST) return -EADDRINUSE; #endif - if (snum && snum < PROT_SOCK && !capable(CAP_NET_BIND_SERVICE)) + if (snum && snum < PROT_SOCK && + (snum != PROT_SOCK_WEB && snum != PROT_SOCK_SWEB) && + !capable(CAP_NET_BIND_SERVICE)) return(-EACCES); /* Make sure we are allowed to bind here. */ diff -Nurd linux-2.2.19.orig/net/ipv6/af_inet6.c linux-2.2.19/net/ipv6/af_inet6.c --- linux-2.2.19.orig/net/ipv6/af_inet6.c Sun Mar 25 17:31:13 2001 +++ linux-2.2.19/net/ipv6/af_inet6.c Thu Aug 16 13:42:32 2001 @@ -236,7 +236,9 @@ sizeof(struct in6_addr)); snum = ntohs(addr->sin6_port); - if (snum && snum < PROT_SOCK && !capable(CAP_NET_BIND_SERVICE)) + if (snum && snum < PROT_SOCK && + (snum != PROT_SOCK_WEB && snum != PROT_SOCK_SWEB) && + !capable(CAP_NET_BIND_SERVICE)) return(-EACCES); /* Make sure we are allowed to bind here. */