タグ

Cに関するtaka222のブックマーク (77)

  • 配列コピー時に犯しやすい誤りに注意する ――C/C++セキュアコーディング入門(6)

    データをコピーする先の記憶領域として十分なサイズが確保されていないと、バッファオーバーフローに繋がります。例えば、コピー先の領域として確保するサイズが不十分だったり、コピー先の領域は意図どおり確保していても、コピーするデータのサイズを誤って指定してしまう場合などです。 典型的な誤りとしては、文字列コピーにおけるNULL終端バイト分のサイズの配慮し忘れがあります(関連ルール「STR31-C. 文字データとNULL終端文字を格納するために十分なサイズの領域を確保する」を参照)。 また、コピーサイズを計算する際に整数オーバーフローが発生したり、正の値を処理することを想定しているロジックに負の値を持った符号付き整数を渡すことで、暗黙の変換により大きな正の値として扱われて問題を起こすケースもあります(関連ルール「STR31-C. 文字データとNULL終端文字を格納するために十分なサイズの領域を確保す

    配列コピー時に犯しやすい誤りに注意する ――C/C++セキュアコーディング入門(6)
    taka222
    taka222 2010/02/17
  • マルチコア時代のLock-free入門

    Please select the category that most closely reflects your concern about the presentation, so that we can review it and determine whether it violates our Terms of Use or isn't appropriate for all viewers.

  • sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)

    はじめに 今回はsizeofオペレータをとりあげます。sizeofは、引数に与えたオブジェクトや型名から、その型のデータがメモリ上に占めるバイト数を求めるオペレータです。皆さんも、メモリ領域を動的に確保したいときや文字列操作などに関連して使ったことがあるでしょう。まずはsizeofオペレータの使用上の注意について説明し、その後でsizeofオペレータの誤用例を2つ紹介します。 sizeofオペレータ使用上の注意 「sizeofオペレータの使用上の注意 その1」は、プログラマが意図する正しい引数を渡すこと、です。メモリ上のオブジェクトのコピーや移動などの操作は、オブジェクトのメモリ上のサイズにもとづいて行います。オブジェクトのサイズを間違っていたら、アクセス違反やオーバフローといった脆弱性につながることは容易に想像できるでしょう。 「sizeofオペレータの使用上の注意 その2」は、引数に副

    sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)
    taka222
    taka222 2010/01/25
  • Page not found - ファイヤープロジェクト

    The page you are trying to reach does not exist, or has been moved. Please use the menus or the search box to find what you are looking for.

  • C言語

    C言語をやってみよう,ふと思い立った.かなり久しぶりだ.大学当時Cは講義であった.学生時代怠けまくった結果(?)私はCよりも,趣味でやっていたJavaの方が書いたコードの行数は多い.だが,やはり「たしなみ」としてC言語はやっておかねばなるまい. 基(?)ライブラリ編 プロセス制御 シグナル パイプ IPC Pthread Socket 端末制御 curses CUnit OpenSSLを使用したCプログラミング その他 基(?)ライブラリ編とりあえず,ライブラリにある関数をいろいろ試してみる.もちろん(?)Debian環境で. ファイル操作 2003-07-20T15:13+09:00 matsu GNU/Linuxシステムでのファイル操作について.ここでは特にシステムコールを用いてファイル操作する方法について. 標準入出力ライブラリでのファイル操作 2003-07-20T15:13+

  • 簡単で難しい“正確なC言語”

    記者は日経ソフトウエアでここ4年半ほどC言語を使ったプログラミングの連載記事を担当している。「C言語好き」を自認してもいる。プログラムを書くことを直接の生業としていないので,プロのエンジニアに比べればずいぶんお気楽な「好き」には違いないが。 最初に連載を手がけたころはJavaの台頭がめざましい時期で,日経ソフトウエアでCプログラミングを連載するのもそろそろ最後かという空気すらあった。ならばということで,思い切り基礎に立ち返った内容で有終の美を飾ろうとしたところ,その連載がかなりの好評をいただいた。「やっぱりC言語の連載は必要だね」ということになり,現在に至るまで何らかの形でCプログラミングの連載が載り続けている。 C言語好きとしてはC言語の記事が載り続けるのは喜ばしいのだが,担当するようになって1年たち2年たつうちに,これでいいのかという問題意識が頭をもたげてきた。月刊誌の連載記事は長くて

    簡単で難しい“正確なC言語”
    taka222
    taka222 2009/12/23
  • 構造体

    構造体変数とメンバ ここでは、ポインタと同じくらい重要な要素である構造体をやりましょう 構造体 (structure) は、データの集合体を一つの変数で共有するような形になります 配列は、一つの変数名に複数のデータを代入できましたが、それは全て同じ型である必要がありました 構造体は複数の型の関連する変数を「集合」として扱えます 通常は、一つの構造体が保有するデータは論理的な関連性のあるものです もちろん強制はされませんが、設計論として関係のないデータを ひとつの構造体としてまとめるのは、プログラムとして欠陥と考えられます 例えば、四角形の座標を表す情報は4つの数値から成り立つと考えられます 4つの数値は、四角形の左上と右下の座標などを格納します 4つの数値は物理的な関連はありませんが、論理的には「4つで1つ」です そこで、これらを構造体として一括して考えるのです 四角形の情報は、左上の座標

  • とある愚直のリニアサーチ - 神様なんて信じない僕らのために

    前のエントリで線形探索のメモリアロケータは駄目だ駄目だ、と言いました。 で、まず線形探索の何が駄目って、メモリは以下のようになっています。 最初は「未使用領域(青)」しかありません。ここからどう領域をとっても良いです。 ただ、使っていくうちに「使用領域(赤)」と「未使用領域(青)」の数珠つなぎになりがちです。 new/deleteの順番を意識すればこういったメモリの配置問題が解決できることもありますが、 実際には「クラスがメモリの状態に束縛される」とすると非常に面倒です。 なので、効率的なアロケータは必須なのです。 あなたが下のような断片化した領域をつなぐ双方向リストを持っていると仮定してください。 ここから効率よくメモリを探すことは絶対にできません。 ソートしておくといったことも考えられますが、ソートすると解放された領域のマージが困難です。 (freeされた隣接した領域はより大きなメモリ

    とある愚直のリニアサーチ - 神様なんて信じない僕らのために
  • http://www.g-ishihara.com/c_dt_01.htm

  • BohYoh.com【C言語講座】標準ライブラリ

    プログラミング言語である標準C(ANSI/ISO/JIS)で提供されている全標準ライブラリの完全かつ正確な仕様をアルファベット順に紹介するページです。

  • C言語からJavaへの移植方法まとめ - Aoisomeの以下略

    XPCEというC言語で組まれたPCエンジンエミュレータを、iアプリのJavaへ移植しています。 やっているうちに、移植手順のちょっとしたコツに気がつきました。 そんなわけで、C言語のソースから、Javaへ移植する場合の作業について、まとめておきます。 常に動作テストできるようにする Cのソースを、いきなりJavaに拡張子変更して、中身を書き換えていくという方法をとると、 すべてをJavaコードに修正するまで、動作確認することができなくなってしまいます。 Javaに拡張子変更するのは、できるだけ後にします。 Cのソースのまま、ビルドして動かせる状態を保ったままで、Javaに無い機能を置換していきます。 Javaに無い機能を置き換える Javaに無い機能というと、 ポインタ演算子 共用体 unsigned型 マクロ などです。 これらを、使わない形のCソースに修正していくわけです。 ポインタ演

    C言語からJavaへの移植方法まとめ - Aoisomeの以下略
    taka222
    taka222 2009/12/11
  • C++: 構造体を格納したSTLコンテナに対してソート・探索・削除などのアルゴリズムを適用する

    C++に慣れている人にとっては当たり前のことかもしれないけど、あまりC++に親しんでいない場合、構造体を格納したSTLコンテナに対してアルゴリズム<algorithm>を有効に活用していないかもしれない。そこで、構造体を格納したvectorなどのSTLコンテナでソートや探索、削除などのアルゴリズムの利用方法を書いておく。 struct A { int n; int* p; }; 上記のような構造体はよく見かける形だと思う。構造体Aに整数型変数のnとポインタ型変数のpがあり、例えばnに配列の要素数、pにその配列を確保したりする。こういった構造体を以下のようにvectorなどのSTLコンテナを使って格納することは多々ある。 vector<A> A_list; これで構造体Aをコンテナに格納できるわけだ。ところで、STLコンテナを使用する一つの理由として便利なアルゴリズムが利用できることが挙げら

  • C++ の吐く機械語 はまじしん一ろう - C++ の吐く機械語

    1/25 >> First Last C++ の吐く機械語 はまじしん一ろう

    taka222
    taka222 2009/12/11
  • C/C++セキュアコーディング入門一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    C/C++セキュアコーディング入門一覧
    taka222
    taka222 2009/11/21
  • 参照はポインタと比べるべきではない - みねこあ

    協力会社のデキるプログラマを次々と切り、代わりにあまりものの正社員が投入されてしまった現在の我が開発チームのレベルは低く、殆どプログラミング専門学校のような様相を呈しています。可愛い男の子が「わかりませーん」というのは萌えますが、30台後半のおじさまが「わかりませーん」というのは殺意が沸きます。 自称 「STLは使ったこと無いけど、C++ 自体は解ってます」な方なのですが、「C++出来ます」の自己申告は危険です。たとえば、曰く、参照がわからない、ですとか。・・・・テケスタ。テケスタ。 ただ、参照には教え方にコツがあるのではないかと思いました。 Cのポインタが文法も概念も引っかき回していった後だけに、他の言語では何でもない「参照」がこんがらかりやすいのは事実です。そういう風に思い直して、こんな解説をしてみました。 * * * C++ の参照と対になるのは、ポインタではなく、通常の変数です。C

    参照はポインタと比べるべきではない - みねこあ
  • C MAGAZINE - プログラミングの禁じ手Web版 C言語編 - 変数に関するパターン

    自動変数の不定値を使う 深刻度:★★★(重度) [症状] わけのわからないバグに悩まされることになります。また,たまたま期待どおりに動作している場合でも移植性や安定性に欠けるプログラムであることに変わりありません。 [原因] ケアレスミス。C言語の自動変数の仕様を理解していなかったなどの原因が考えられる。 [対策/予防] まず,コンパイラの出すwarningに注意して,デバッガで丹念に追いかけることです。根的に解決するためにはC言語の自動変数の仕様を理解することが必要です。 [例外] なし。 [備考] List 8のようなプログラムは,自動変数の不定値のためにプログラムそのものの動作が不安定になる可能性があります。この場合,aは不定値なので必ず「case 0」を通過すると思っていると大間違いです。仮に,このようなコードを含むプログラムを実行して,「case 0」を通過したとしても,それは

  • C MAGAZINE - プログラミングの禁じ手Web版 C言語編

    プログラミングの禁じ手Web版 C言語編 /Top/今週のソースコード/プログラミングの禁じ手Web版 C言語編/ [←前] [次→]  [C言語版一覧] [C++版一覧] 誌2000年4月号に掲載された「特集1 プログラミングの禁じ手 C言語編」よりWebサイト用に抜粋したものです。ソースコードとともに公開いたします。作者の真紀俊男様に感謝します。 プログラミングは,「なぜかうまく進めなくなる」,「だんだんと期待した通りに動かなくなる」など,とても「イヤ」な面があります。そうした現実に直面したときに稿がお役に立てれば幸いです。

  • かおすふぃーるど (Weblog) | ANSI 規約 (命名規約)

    taka222
    taka222 2009/11/19
  • C言語でコルーチン(co-routine) - なんでも作っちゃう、かも。

    Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。 C言語でコルーチンを実装してみる。 コルーチン(co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞co-は協調を意味するが、複数のコルーチンが中断/継続により協調動作を行う。 組み込みシステムではよく、複数の処理を同時に行う必要がある。そのような場合、コルーチンが使えれば、処理の記述が楽に行える。switch-caseあるいは関数テーブルなどを駆使すれば、実現することは可能だが、見通しがわるくなる。 コルーチンをサポートする言語にはModu

  • HOMMEZ公式オンラインショップ

    HOMMEZ(オムズ)は男性の心と身体の健康を支援し、一人でも多くの人が子供を得る幸せや男性としての喜びを享受できる社会の実現を目指しています。男性の妊活、活力にまつわる情報や商品の力で性や妊活に悩む男性が効率的に納得感を持って活動できる機会を創出します。