ほんの数箇所で仕事しただけで、無数の組み込みWebサーバを目にすることができました。
ルータやスイッチなどに限らず、あらゆるものがWebインターフェースを備えています。
いまではアプリがアプリの為にWebサーバを内蔵する時代なのです。
Web2.0(←この語句も完膚なきまでに陳腐化しましたね!)時代においては、よりいっそうその存在感が増すことでしょう。
しかし、Webインターフェースというのは、セキュリティの穴になりやすい側面もあります。
昔は閉じた世界で動くものだった組み込み装置が外界に一歩を踏み出しつつある現代です。
内部のドライバー関数などは、呼び出された引数について、想定外の値をレンジチェックなんかしませんね。それが原因で不具合が生じると、呼び出し元の開発者に対して、こう言うでしょ。
おたくのXXX処理なんだけどさ、YYYの条件の時に、おかしな値でウチの関数呼び出しているよね。
あれなんとかしてくんないかな~。
ウチのドライバがこけちゃうんだよねぇ。
インターフェースあるところに、かならず仕様書があってしかるべきです。
仕様書のとおりに呼び出されたら仕様書の通りに振舞う。書いていない振る舞いについての定義は不明・不定・未定。
後は知ら~~~ん
そんなカタブツは、組み込みに限らず開発現場ではよく居た存在でした。
しかし分業化が進んだ今、それは許されません。
ポインタを受け取るならヌルチェックが必須です。ポインタのポインタを受け取るなら、ヌルチェックは2重に必要です。絶対にありえないとあなたが思い込むのは勝手ですが、未来に向けての保険が必要です。
カウント値を受け取ったらゼロテストが必要です。
もちろんヌルチェックやゼロテストが副作用を生む場合もあるでしょう。しかしそんなものは言い訳です。