W42CAとW42Hに恥ずかしいバグ
auのケータイでバグが発見されました。実際に自分のW42CAで試してみたので間違いありません。こちらの記事で知りました。
ただ、私にはプログラミングの知識がありません。なぜ「恥ずかしいバグ」なのか教えてください。
回答(1)
1.

C言語で
printf(str);
のようなコードを書くとこういうことがおきます。(% から始まる文字列が特殊な意味を持ってしまい、意図しない動作をしてしまう)で、こんなことはまっとうなプログラマーであれば誰でも知ってる常識なのです。
そういう常識も知らないようなプログラマーが書いたコードだということがうかがい知れてしまう、という意味で「恥ずかしいバグ」ということになります。
c言語はかなり昔の学生時代に勉強しましたが、すっかり忘れていました。
今回のバグはプログラマーにとって有り得ないような初歩的なミスをしているって事ですね。回答ありがとうございました。
コメント(4)
%nは、改行。%Sは、文字列出力だったかな。
何となくデバッグっぽいね。
Cなどのprintfの変換だと、%sは文字列、\nで改行ですが、%n/%Sって何でしょ。。。URLエンコードとかでも%はつきますねー。
%n は指定したアドレスに出力文字数を書き込む指定子です。よって、元記事のようなコーディングをしていると不正なアドレスに書き込み発生→終了となります。
詳細はこちらのページが詳しいです。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/...
参考までに。



