SSブログ

参りました

ET2007に行った時に面白いイベントがやっていました。
C言語のバグ捜しクイズと言うもので、これが結構判らん。と言うかギブなんだが。

写真撮ればよかったなぁ!と会場を出てから気付いたのですが、インタフェースの編集者((葵)さん)のBlogにそれが掲載されている事に昨日気付いたので、そこへのリンクを貼っておきます。
http://www.cqpub.co.jp/interface/default.asp
12月14日の「大脱走マーチ」から「組み込みエンジニアのお祭り」に進む。
http://www.kumikomi.net/hazre/ocha_130/01.html

上記ページの一番最後に問題が掲載されています。

char *PrintMe()


の方は簡単。冒頭のグニャグニャさそり(一応頭を下げて、参りましたのポーズ)をもらいました。が、ギブアップだったのは先の

if( !strcmp(argv[i],"-configure" ))


の方。
当然コンパイルエラーとか警告とかそんなレベルではなく、気付かずやると深刻な問題を引き起こす可能性のある、そんなバグなんでしょう。
誰か判った方、教えて。

と言う訳で、業務で大規模プログラミングとかやっている方、是非ソースコード検証ツールを検討してあげてね。
COVERITY
http://www.coverity.com/index_jp.html

しかしこの体たらくなので、私はとてもじゃないけれど人に、「C言語で開発すれば簡単!」なんて言えませんぜ。

新ANSI C言語辞典

新ANSI C言語辞典

  • 作者: 平林 雅英
  • 出版社/メーカー: 技術評論社
  • 発売日: 1997/05
  • メディア: 単行本(ソフトカバー)


組込み現場の「C」プログラミング―基礎からわかる徹底入門

組込み現場の「C」プログラミング―基礎からわかる徹底入門

  • 作者: SESSAME
  • 出版社/メーカー: 技術評論社
  • 発売日: 2007/03
  • メディア: 単行本


nice!(0)  コメント(4)  トラックバック(0) 

nice! 0

コメント 4

Sim

geteuidのあとに()がないとかは違いますか?
by Sim (2007-12-26 00:34) 

hamayan

geteuid:geteuid() は現在のプロセスの実効ユーザー ID を返す。

ああ!そうか!そんな簡単な事だったのか。なんだよ~~~。
てっきり大域変数の一部なのかと思っていた。
駄目だ、UNIXプログラミングとか行わないから、感覚が鈍い。
get_tidとかref_tskとか書いてくれれば。
by hamayan (2007-12-26 06:59) 

のりたん

私は、
if( !strcmp(argv[i],"-configure" ))
だけでも十分に気持ち悪いのだけど。
文法的には同じでも
if( strcmp(argv[i],"-configure" ) == 0)
と書きたい。
by のりたん (2007-12-26 09:49) 

hamayan

ああそうそう、私も最近はこっち派。
if( strcmp(argv[i]," ;-configure" ) == 0)

明確に0と比較したい!と言う意思表示で。
by hamayan (2007-12-26 10:03) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。