Właśnie uczestniczę w pewnym szkoleniu i Certyfikowane Materiały w kontekście podatności buffer overflow uporczywie podają przykład katastrofy Ariane 5.
Nie każdy overflow to buffer overflow
Szanujmy się, overflow owszem był, ale to nie był buffer overflow. Ja wiem, że wybuchające rakiety robią wrażenie, ale w tym kontekście odwrotne od zamierzonego, jeśli ktoś wie o co chodzi.
Całość jest zabawna jeszcze z jednego powodu (kod był w Ada):
Many other programming languages provide runtime checking and in some cases even compile-time checking which might send a warning or raise an exception when C or C++ would overwrite data and continue to execute further instructions until erroneous results are obtained which might or might not cause the program to crash. Examples of such languages include Ada, Eiffel, Lisp, Modula-2, Smalltalk, OCaml and such C-derivatives as Cyclone, Rust and D. (...)
Przy czym akurat w tym konkretnym przypadku mogło być inaczej:
Ada also supports run-time checks to protect against access to unallocated memory, buffer overflow errors, range violations, off-by-one errors, array access errors, and other detectable bugs. These checks can be disabled in the interest of runtime efficiency, but can often be compiled efficiently.
Nie zmienia to jednak faktu, że buffer overflow to nie był.