chiark / gitweb /
Allow bind() to port 0 !
[authbind.git] / libauthbind.c
index dd5c4841c314ff22f3d14768deb1e4926e9a4302..c8f34227388659c4743b8b706c77a269f34da761 100644 (file)
@@ -149,7 +149,8 @@ int bind(int fd, const struct sockaddr *addr, socklen_t addrlen) {
   int status;
 
   if (addr->sa_family != AF_INET || addrlen != sizeof(struct sockaddr_in) ||
   int status;
 
   if (addr->sa_family != AF_INET || addrlen != sizeof(struct sockaddr_in) ||
-      ntohs(((struct sockaddr_in*)addr)->sin_port) >= IPPORT_RESERVED/2 || !geteuid())
+      !geteuid() || ((struct sockaddr_in*)addr)->sin_port == 0 ||
+      ntohs(((struct sockaddr_in*)addr)->sin_port) >= IPPORT_RESERVED/2)
     return old_bind(fd,addr,addrlen);
 
   sprintf(addrarg,"%08lx",
     return old_bind(fd,addr,addrlen);
 
   sprintf(addrarg,"%08lx",