|
How to crash an in-flight entertainment system | CSO Blogs by Decius at 3:52 am EST, Feb 25, 2007 |
My next test case was the number "8"; no luck there either, the number didn't change at all. I then tried the number 5: success! '5' is an interesting test case, it's a "boundary value" just beyond the maximum allowed value of the field which was '4'. A classic programming mistake is to be off by 1 when coding constraints.
|
How to crash an in-flight entertainment system | CSO Blogs by Lost at 4:33 am EST, Feb 25, 2007 |
I now had the software exactly where I wanted it, in an unintended state; the illegal value 5 was now in my target field. I then turn my attention back to the screen and hit the button which, to my complete surprise, incremented the value to 6! Again, an implementation problem, the increment constrain probably said something like "if value = 4 do not increment." In this case, the value wasn't 4 but 5 so it happily incremented it to 6! I then continue to increment the value by pressing the button until I get to 127 and then I pause for a moment of reflection. 127 is a very special number; it is the upper bound of a 1 byte signed integer. Strange things can happen when we add 1 to this value, namely that 127 1 = -128! I considered this for a moment as I kicked back a small bag of peanuts and in the interest of science I boldly pressed the button once more. Suddenly, the display now flashes -128 just for an instant and then poof...screen goes black. Poof...screen of the person next to me goes black. Screens in front of me and behind me go black. The entire plane entertainment system goes down (and thankfully the cascading system failure didn't spill over to the plane navigation system)! After a few minutes of mumbling from some of the passengers, a fairly emotionless flight attendant reset the system and all was well. I landed with a new-found respect for the game of Tetris and consider this to be the most entertaining version of it I have ever played.
|
|
|