Date: Mon, 18 Feb 2008 14:23:00 +0100 From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no> To: Jim Bryant <freebsd@electron-tube.net> Cc: freebsd-fs@freebsd.org, freebsd-security@freebsd.org, FreeBSD-bugs@freebsd.org, freebsd-stable@freebsd.org Subject: Re: How to take down a system to the point of requiring a newfs with one line of C (userland) Message-ID: <86odae5rgr.fsf@ds4.des.no> In-Reply-To: <47B90868.7000900@electron-tube.net> (Jim Bryant's message of "Sun\, 17 Feb 2008 22\:24\:08 -0600") References: <47B90868.7000900@electron-tube.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Jim Bryant <freebsd@electron-tube.net> writes: > #include <stdio.h> > #include <stdlib.h> > > int main(int argc, char **argv) { int i; char buf[1024]; bzero(buf, 1024)= ; for(i =3D 0; i < 10000; i++) { sprintf(buf, "touch %s%05d\n", argv[1], i)= ; system((const char *)buf);} return(0);} Subject should be "how to take down a system [...] with three lines of badly written C, provided you have root privileges already and are too lazy to just dd if=3D/dev/zero of=3D/dev/ad0s1 count=3D100", which would accomplish the job much faster. Purely in the interest of showing off, here is my version. It is 81 bytes shorter than yours, it is valid C99 with POSIX extensions (yours is not), and it produces 11,450 files in about 0.2% of the time yours takes to produce 10,000. #include <unistd.h> #define b(i,v) for(int v=3D48;v<127;++v){f[i]=3Dv; #define a(i) b(i,v##i) int main(void){char f[5]=3D{'/'};a(1)a(2)a(3)truncate(f,0);}}}} DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86odae5rgr.fsf>