タグ

Cとtechnologyに関するtsupoのブックマーク (11)

  • コード品質の可視化ツール、東陽テクニカとエクスモーションが販売 - @IT

    2009/01/29 東陽テクニカは1月28日、組み込みシステム開発向けのコンサルティングサービスを提供するエクスモーションと業務提携を結んだことを発表した。今回の提携で両社は、東陽テクニカが販売しているソースコード解析ツール「QAC」を活用したソフトウェア解析ツール「eXquto」を開発し、2月より販売する。 QACは、英Programming Researchが開発したディープフロー静的解析ツールだ。C言語で開発されたソースコードを解析してコーディングミスによるバグなどを見つけ出し、ソフトウェアの品質を「メトリクス」として指標化する。 eXqutoは、QACで測定したソフトウェアのメトリクスをまとめ上げ、ソースコードに含まれる問題を、グラフやチャートを用いたレポート形式で分かりやすく提示する。ソフトウェア構造やコーディング品質の善しあしを示す「スコープ別評価」と、ソフトウェアに潜む脆弱

    tsupo
    tsupo 2009/01/30
    ソースコード解析ツール「QAC」を活用したソフトウェア解析ツール「eXquto」 → QAC の出力結果を見やすくするツール
  • Cでバッファオーバーフローを起こさせないためのちょっとした工夫 - jj1bdx: life beyond Japan

    【自分語り】1推しの卒業によせて . 私の1推し、ゆきりんこと柏木由紀ちゃんが、17年に渡り在籍したAKB48を卒業することになった。 この機会に、ゆきりん推し(48ファン)としての自分自身のことをすべては不可能であるものの振り返ろうと思う。 内容からして世代がわかることも仕方ないし、限りなくゼ…

    Cでバッファオーバーフローを起こさせないためのちょっとした工夫 - jj1bdx: life beyond Japan
    tsupo
    tsupo 2008/06/01
    strlcpy() を紹介しておくべきだ,という意見があった → ISO では strcpy_s() のように _s 付きの関数名になるようです。http://watcher.moe-nifty.com/memo/2008/05/re_c_38b6.html の「追記 2」参照
  • JVNVU#162289: ある種の範囲チェックを破棄するC コンパイラの最適化の問題

    C コンパイラの中には、最適化処理において、ポインタ演算のオーバーフローチェックを行うコードブロックを省略することがあります。従って、こうしたコンパイラを使ってコンパイルしたアプリケーションは、バッファオーバーフローの影響を受ける可能性があります。 gcc 4.2 およびそれ以降のバージョンで問題が確認されていますが、他のベンダが提供するコンパイラにも同様の問題が存在する可能性があります。 C 言語で次のような型が与えられたとき char *buf; int len; C コンパイラの中には buf+len >= buf が成立すると仮定するものが存在します。その結果、次に示すような長さチェックを行うコードがコンパイラの最適化によって省かれてしまうことがあります。 len = 1<<30; [...] if(buf+len < buf) /* 長さチェック */ [...オーバーフローに

    tsupo
    tsupo 2008/04/28
    C コンパイラの中には buf+len >= buf が(常に)成立すると仮定(して、最適化(=コードを削除))するものが存在 → バッファオーバーフローの脆弱性が作りこまれる可能性あり
  • 【ハウツー】今こそ再考察! C言語ポインタ徹底解説 (1) ポインタと1次元配列の関係 | エンタープライズ | マイコミジャーナル

    C言語は、ポインタが使える言語です。ポインタを使えば、メモリの直接的な操作など、より柔軟なプログラミングが可能です。一方、そのためにはポインタがどのようなメモリ領域を指し示しているか、またポインタ自体が有効なアドレスを保持しているかなどについて十分な理解が必要です。 稿では、C言語のポインタについて、配列との対比に焦点を当てて解説を行います。 *** C言語では、ポインタを配列のように扱うことができます。また、配列名はポインタに変換可能で、別のポインタに代入できます。 まずは1次元の場合について、ポインタと配列の関係を考えてみましょう。 宣言文の記述 いま、ポインタと配列を次のように宣言したとします。 char *p; ← char型へのポインタpを宣言 char a[5]; ← char型を要素とする、要素数5の配列aを宣言 この宣言の結果を図にすると、図1、図2のようになります。 図

    tsupo
    tsupo 2008/04/18
    とりあえず、「アドレス定数」ということばに違和感。CASL 以外では「アドレス定数」って言い方しないんじゃないのかなぁ。ちなみに関数へのポインタは bookey でも使ってます。
  • scanf って教える必要ある?(初心者に教えるときでも最初から脆弱性が発生しない方法を教えよう)

    これは、ちょっと これは、かなり 上記で話題になった記事ですけど、他のも覗いてみた。 C/C++のデータ型と書式を知る:入力の書式 #include <STDIO.H> .......... char a[11]; /* 半角10文字分の文字列を保持する変数(配列) */ scanf( "%s", a ); /* 変数aに文字列を入力 */ printf( "%s\n", a ); /* 変数aの値を出力 */ おい! scanf って教える必要がある?教えるなら、fgets でしょう。 char buffer[11]; fgets(buffer, sizeof(buffer), stdin); printf("%s\n", buffer); 慣れている人ならば、sscanf も加えるかもね。 char buffer1[11]; char buffer2[11]; fgets(buffer

    tsupo
    tsupo 2008/04/01
    scanf() は期待してるのと違う入力が来たら、(特に対策してない限り)あっさり落ちるからねぇ。この先も、いろんな脆弱性含みのコードが出てきそうで、楽しみですww
  • これは、かなり

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 26210 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

    tsupo
    tsupo 2008/04/01
    http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255-2,00.htm の件。なんでこんな状態で連載はじめちゃったんでしょうねぇ。今後、いろんな脆弱性が観測できそうな予感。
  • C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan

    ポインタとは ポインタはC/C++言語の特徴的な機能のひとつである。ポインタ(pointer)を直訳すると「指し示すもの」であり、別の変数や文字列定数の場所を指し示すために使う。また、ポインタを指すポインタ(ポインタへのポインタ)というものも存在する。 このページをお読みいただいている読者にあっては、「C言語 ポインタ」「C++ ポインタ」などのキーワードでWeb検索をしたことがあるかもしれない。そうするとポインタに特化した内容の書籍をいくつか見つけられる。それだけ奥が深い機能ということである。 ポインタの用途 では、ポインタはどんなところで使われているのだろう。C/C++言語では、あらかじめ定義されている関数が多数存在するが、その一覧には、*(アスタリスクあるいはアステリスク)が付いているものをよく見かける。 これらはポインタを表し、主に文字列の操作やファイルをはじめとするデータの入出力

    C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan
    tsupo
    tsupo 2008/04/01
    いまどき、scanf()なんて危険な関数、使う人はいないでしょ? ふつう、自前で用意するよ、入力系の関数は。
  • Cで実現する「ぷちオブジェクト指向」:CodeZine

    はじめに CodeZineではお初にお目にかかります、επιστημη(エピステーメー)です。最初のアーティクルはクラシックなCのお話。 昨今のアプリケーションはオブジェクト指向言語による実装が主流と言ってもいいでしょう。C++Java、VB.NETさらにはRubyPythonといったスクリプト言語まで、オブジェクト指向でない言語を探すのに苦労するくらいです。 記事では、今なお現役バリバリで活躍している手続き型言語の代表格(?)Cによる、オブジェクト指向のマネゴト(オブジェクト指向風味のCコーディングスタイル)を試みます。対象読者 もっぱらCを主な開発言語として使ってはいるけども、オブジェクト指向に興味と憧れを抱いている方。抽象データ型 手始めにオブジェクト指向の特徴の1つ、「抽象データ型(ADT:Abstract Data Type)」をCで実現してみます。抽象データ型とは、データ

    tsupo
    tsupo 2007/02/14
    「C でオブジェクト指向」というのは、むかし、Dr.Dobb's Journal とか C Users Journal で定期的に取り上げられてたけど、いまはどうなんだろ?
  • Geekなぺーじ:C言語が嫌いな理由

    「Why I hate C」という記事がありました。 私は個人的にはC言語が好きですが、C言語が嫌だという視点も面白いので要約してみました。 かなり削っているので詳細は原文をご覧下さい。 C言語は組み込みに使うには良い言語ですが、その他の99.9%のアプリケーションを作るには最適とは言えません。 現在、アセンブラが一般的なアプリケーションを書くための良い解では無いことは自明です。 ここでは、もはやC言語もそうでは無い理由を述べたいと思います。 C言語の最も大きな問題はプログラマが間違いを犯しやすい事です。 私も良く間違えます。 どんなプログラマであっても数千行のコードを書いてバグが一つも無いということはありません。 コード量が少ないということは間違いの数も少ないということになります。 C言語は、言語のデザイン上、より多くのコードを書く事を要求します。 また、新しく開発されたプログラミング言

    tsupo
    tsupo 2007/01/04
    ここに書かれている欠点を何とかしようとしているCの処理系も多いので、それなりになんとかなるよ、とか言ってみる。あと、「C言語」と表記すると kusakabe氏にチェックされます。
  • プログラムは ASCII で書くべきだよ - 兼雑記

    ふと、 main = 195; とかやって喜んでいた私はバカだったんじゃないかと思いました。 Binary 2.0 などとうかれてほとんどバイナリのコードをゴルフに submit してたのはどうなのか、と。プログラムは ASCII で書くべきだったんじゃないでしょうかと。それもメンテナンスしやすいように、 isprint が true を返すような文字で書くべきではないのか、と。 とりあえず Hello, world! 書きました。そのままコピペでたぶん最近の x86 & linux & glibc なら動きます。それ以外の環境では無理です。 char main[]="`j X$@P[PYPPPPX4.4 PZUX, P^XH,=)F(P_X3F()8)8@)8@@)8)8@PYX@@@@CQBaGHello, world!\n"; int 0x80 とか ret とか ASCII の範囲

    プログラムは ASCII で書くべきだよ - 兼雑記
    tsupo
    tsupo 2006/12/19
    むかし、こういうの流行ったよな、とか思ってしまった。
  • 初めてのC# 第2版

    プログラミング言語としてのC#を基から学べる入門書。WindowsアプリケーションやWebアプリケーションの作り方を単に紹介するのではなく、C#を使ってプログラミングの基礎を丁寧に解説します。デバッグや例外、ジェネリック、デリゲートなどについては章を立てて平易な表現で丁寧に解説しているのでプログラミングが未経験という読者にも好適です。各章末に用意した練習問題を使って理解度をチェックしながら学習できます。C# 2.0およびVisual Studio 2005(Visual C# 2005 Express Edition)対応。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷

    初めてのC# 第2版
    tsupo
    tsupo 2006/10/08
    C# 2.0およびVisual Studio 2005(Visual C# 2005 Express Edition)対応
  • 1