到達不能コード
以下の例は、AppleによるTLS/SSLの実装上のバグであり、CVE番号として CVE-2014-1266 が与えられているほか、"goto fail bug" とも呼ばれている。実際のコードは以下の通りである。
goto fail;という文が2行連続している所がある。そして、2行目のほうのgoto文により、本来到達すべき final の呼び出しが到達不能コードとなっていて、final によるチェックが「常に」スキップされ、err は SHA1 update 操作の成功の後の値を保持することとなり、final による署名検証が行われない状態となっていた。
明らかにこれは「到達不能コードによってセキュリティ上の脆弱性がもたらされた」のではない(到達不能コードは、一般に何もしない。それが何か悪さをしたと言えるのは、例えばコードサイズの増加であるとか、言語仕様で未定義なソースコードの記述を利用して実行させる、などした場合であろう)。真に「セキュリティ上の脆弱性をもたらした」のは、「一見すると到達不能コードのように見えるためか、放置されたものと思われる、2行目のほうのgoto文(によって、到達されねばならないコードが到達不能になっていたこと)」である。教訓は「到達不能コードを放置するな。なぜなら、そういうコードの存在を見慣れるせいで、到達不能であってはいけないコードが到達不能になっていることを見逃す原因になるから」という点である。