タグ

cに関するkaidoのブックマーク (29)

  • CERT Secure Coding Standards - CERT Secure Coding Standards

    Welcome to the Secure Coding Web Site This web site exists to support the development of secure coding standards for commonly used programming languages such as C and C++. These standards are being developed through a broad-based community effort including the CERT Secure Coding Initiative and members of the software development and software security communities. For a further explanation of this

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

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

    C/C++セキュアコーディング入門一覧
  • 最新Cコンパイラーの最適化事情 - Radium Software

    State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. 最近のCコンパイラーの最適化能力についてまとめたプレゼンテーション。定数の扱いやインライン展開などの基的な項目から始まって,分岐の削除やベクトル化, SIMD 化など,最新のコンパイラーに搭載されている様々な機能について調べている。 この手の分岐の削除はほとんどのコンパイラーで有効らしい。 ベクトル化については gcc がだいぶ頑張っている印象。 「gcc は全プラットフォームにおいてビデオコーデックプログラマーより賢い」 これらの最適化が実際のコードでどのように機能するか気になって逆アセンブリコードを覗いてみる人も少なくないと思うけれど,それを代わりにやってくれた感じだ。この手の話題に興味がある人ならば,目を通

    最新Cコンパイラーの最適化事情 - Radium Software
  • C/C++ 迷信集 | 株式会社きじねこ

    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

  • バグを生まないコーディング法、10個の規則でソフト開発を効率化(1/3) ― EE Times Japan

    ソフトウエア開発にはバグがつきものだ。ただし、バグの発生を最小限にい止める方法がある。コーディング規則を適用してコードを記述することだ。バグが発生してからそれを発見し、修正するという通常の開発手順に比べて、簡単に、しかもコストをかけずにバグをつぶせる。 ここでは、ZigBeeを利用したセキュリティ・システムから医療機器にわたる筆者の組み込みソフトウエア開発の経験から得た、バグをなるべく発生させないコーディング規則を紹介する。 なぜコーディング規則が必要か コーディング規則は、ソフトウエア開発者に対して、コードを記述する上での規則をまとめたものである。英語のライティング教として著名な「The Elements of Style」(William Strunk Jr.、E. B. White著)の、プログラミング言語版のようなものだ。 組み込みソフトウエアにも、きれいで、正しく、簡

  • CとC++は似たようなモノか? | スラド

    ストーリー by makeplex 2009年05月16日 22時52分 違和感がないならまだ初心者ということか? 部門より プログラミング言語のカテゴリ分けで、CとC++は一緒にされることが多い。Q&AサイトやSNS等でも「CとC++」というように同類視されている。 先日の当/.jpのアンケートでも、プログラミング言語に関する設問はこうなっている。 □C/C++ □C# □Objective-C CプログラマとしてはCとC++を一緒にされて迷惑している。実際, ネット上での質疑応答でも「まず CかC++どっちの質問?それを書いてくれないと答えられないよ」ってのが最初の応答だったりもするし。 個人的には、言語の「同類度」という観点では Cだけ別にしてオブジェクト指向という共通点がある C++/ObjectiveC/C#を一緒にするほうが妥当に感じるのである。 言語のグループ分けの際にどれと

  • C言語の対話環境ccons - きりかノート 3冊め

    cfe-dev MLに流れていた「[ANN] ccons : an interactive console for C based on clang and LLVM」 http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-April/004960.html http://code.google.com/p/ccons/ http://fizzysoft.net/personal/ccons.pdf clang/LLVMを利用した、irbのようなC言語の対話環境"ccons"というプロジェクトの告知。名前は似てるけどsconsとはぜんぜん関係ない。 Cのインタプリタというのはこれまでにもあったけれど、clangのライブラリを使ってるのはたぶん初じゃないかな。さっきチェックアウトしたr165でtestディレクトリを除いたファイルの総行数が3,000程

    C言語の対話環境ccons - きりかノート 3冊め
  • Writing Insecure C, Part 3 | Buffers and Strings | InformIT

    Part 1 and Part 2 of this series pointed out some simple ways of writing security holes in C code, and discussed how to avoid them. This article concludes the series with a look at the most common source of security issues in C code—buffer handling—and some slightly more advanced techniques for introducing and avoiding security problems. Strings in C are a perennial cause of problems. When C was c

  • Writing Insecure C, Part 2 | Integer Issues | InformIT

    In part 1 of this series, we looked at some of the problems that C causes with novice programmers, related to error checking and variable initialization. This week we'll dig a bit deeper and see how C handles integer values—an unexpected cause of security holes—and look at how we can build some less error-prone memory management routines on top of C. If you're used to high-level languages, C's sup

  • Writing Insecure C Part 1

    Use of the C programming language is often blamed for insecure code. This is not entirely a valid accusation; projects like OpenBSD show that it is possible to write secure code in C. The problem with C, in this respect, is the same as the problem with assembly-language programming: The language exposes all of the features of the architecture to you, but little else. It provides all the features y

  • Google,Cアプリケーションの単体テスト向け軽量ライブラリを発表

    Googleは,オープンソース・プロジェクトの「Cmockery」がCアプリケーションの単体テスト作成プロセスを一般化する軽量ライブラリの初版を公開したと発表した。同社が米国時間2008年9月15日,公式ブログで明らかにしたもの。 このテスト・フレームワークは,可変個引数マクロなど複雑なコンパイラ機能や古いコンパイラでは対応していないC99機能などを回避することでテストをシンプルにすることを目的としている。 Cmockeryの初版は,Google CodeのWebサイトからダウンロードできる。 [発表資料へ]

    Google,Cアプリケーションの単体テスト向け軽量ライブラリを発表
  • メモリ操作の安全性を確保する、ANSI C規格準拠C言語コンパイラ | スラド デベロッパー

    数日前の話になりますが、産業技術総合研究所は4月11日、既存のC言語プログラムにメモリ操作の安全性を付与できるコンパイラ、「Fail-Safe C — release 1」を開発したと発表しました(産総研のプレスリリース)。プレスリリースや開発部門である情報セキュリティ研究センターの解説ページによると、既存のソースコードをそのままこのコンパイラに掛けるだけで、危険なメモリ操作の自己チェック機能を備えた実行可能ファイルが生成されるという仕掛けのようです。さらに、このコンパイラは、ANSI C規格に準拠しながら、厳密には規格違反だが既に一般的になっている様々な記述手法についても安全な範囲でサポートしているとのこと。 バッファオーバーフロー等、メモリ破壊が原因のソフトウェア脆弱性が後を絶たない現状ですが、こういうコンパイラが普及したら少しはそのような状況が改善されるのかなぁ、と期待します。このコ

  • mmap の話 - IT戦記

    今のところの理解 int fd; char * addr; fd = open("/Users/amachang/hoge", O_RDONLY); addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0); close(fd); こんな感じでやると、 hoge っていうファイルと addr から始まるメモリがちょうどスワップファイルとページの関係になる。 つまり、実際はファイルとメモリの番地は関連付けられただけで、アクセスするとページフォルト割り込みが発生してその都度読みにいく。 他のプロセスが既にこのファイルを mmap してたら同じ物理アドレスを指す仮想アドレスが帰ってくる。(仮想アドレスは違うけど、物理アドレスは同じ) MAP_PRIVATE が指定されている場合、プロセスがメモリの内容を変更する

    mmap の話 - IT戦記
    kaido
    kaido 2008/04/14
  • C 言語の配列について - IT戦記

    僕の理解も相当間違ってたみたいですね 「 *s 」と「 s[] 」の違い - IT戦記 書いてよかった>< 書かぬは一生の恥になるところでしたね! ありがたい突っ込みありがとうございます>< 404 Blog Not Found:c - *sとs[]の違い http://d.hatena.ne.jp/PyTest/20080404/1207273307 はてなブックマーク - 「*s = "...";」 と 「s[] = "...";」 の違い - IT戦記 だいたい分かった気がする 違ってたらきっと誰かが突っ込んでくれる>< 配列 ポインタはキモくなくて、配列がキモいってことが分かった。 あまちゃん: 配列は式の中に置くと「一部の例外」をのぞいてその場で「先頭要素のポインタ」の値として扱われるよ ひとちゃん: 式じゃないところってどこ>< あまちゃん: 宣言ぐらいじゃね ひとちゃん: で

    C 言語の配列について - IT戦記
    kaido
    kaido 2008/04/14
  • c - *sとs[]の違い : 404 Blog Not Found

    2008年04月04日03:00 カテゴリTips c - *sとs[]の違い これ、結構tricky。 The C Programmming Lanugage K&R 「 *s 」と「 s[] 」の違い - IT戦記 コメント欄にある「K&Rの5.3を読めばわかる」かというと多分わからない。それどころか P. 100 char s[]; and char *s; are equivalent; なんて書いてあるから余計わからなくなると思う。 なのだけど、すっごく簡単な覚え方がある。 答えは sの値を変更できるか 要するに char *s = "pointer"; printf("%s\n", ++s); はOKだけど、 char s[] = "array"; printf("%s\n", ++s); はNGということ。GCCなら error: wrong type argument to

    c - *sとs[]の違い : 404 Blog Not Found
  • 「 *s 」と「 s[] 」の違い - IT戦記

    沖林さんがんばれ! なんか、かわいそうになってきた><がんばってください! C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan ところで 僕はちゃんと説明できるかな>< 少しでも言葉や概念が変だったら教えてください>< *s char *s = "hoge"; コードがロードされたときに文字列もメモリにロードされて、実行時にスタックにポインタ変数ができて文字列を指す。 文字列がロードされたメモリのページ(?)には、書き込み権限が付加されないので文字列の内容を書き換えることはできない。 .cstring str: .ascii "hoge" .text .globl _main _main: pushl $str ↑イメージ的にはこんな感じ s[] char s[] = "hoge"; コードがロードされたときに文字列もメモリにロードされ、実行時にス

    「 *s 」と「 s[] 」の違い - IT戦記
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
    kaido
    kaido 2008/02/02
  • The Base Specifications Issue 6

    The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition Copyright © 2001-2004 The IEEE and The Open Group A newer edition of this document exists here GoTo: Non-Frames Index | Register This standard has been jointly developed by the IEEE and The Open Group. It is both an IEEE Standard and an Open Group Technical Standard. Abstract: The 2004 edition incorporates Technical Corrigend

    kaido
    kaido 2008/02/01
  • IPv6実験所

    IPv6は一見簡単なようで、さまざまな落とし穴が存在しています。仕様もそれなりに複雑です。ここではIPv6を実際に使ってみながら理解をしていくことにします。 IPv6アドレスについて IPv6のアドレス体系についてのメモです。 [IPv6アドレスについてのメモ]ページ ローカルな環境でIPv6を使用する IPv6インターネット対応なネットワークにつながっている人は少ないと思います。そこで、IPv4のプライベートアドレスに相当する、「一意なローカルIPv6アドレス」(RFC 4193)を使ったローカルなIPv6ネットワークを構築します。 [ローカルな環境でIPv6を使用する」ページ

  • C言語: UNIX最速ファイルコピー

    Created: Kazuki Ohta, 2006/06/14 Last Update: Kazuki Ohta, 2006/06/14 「write(2)の正しい使い方」と同じく、OS演習でやった事の延長線の記事を書いてみる。お題は「UNIX上で大規模ファイルを最速でコピーする方法」だ。一般的に、UNIXでファイルをcopyする際には以下のような方法が有る。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> write mmap -> write with madvise read, write, mmap辺りは良いとして、posix_fadviseというシステムコールが有

    kaido
    kaido 2007/10/17