タグ

cに関するi_ogiのブックマーク (14)

  • 情報処理推進機構:情報セキュリティ:調査・研究報告書:情報セキュリティ技術動向調査(2008 年下期) 5 テンポラリファイルの扱い

    2008年下期には、Perl の File::Path モジュールの rmtree 関数に関する CVE が 3件発表された。 (CVE-2008-2827, CVE-2008-5302, CVE-2008-5303)また、symlink attack に関する CVE は 100件以上出ている。 テンポラリファイルの扱いに関する問題は古くからあるが、いまだに多くの問題が発生する。そこで稿ではテンポラリファイルの扱いかたについて解説する。また、安全な削除に利用できる新しいシステムコールが提案されているので、それについても触れる。 テンポラリファイルはプログラムが一時的に利用するファイルである。 Unix においては /tmp や /var/tmp というディレクトリが提供されており、すべてのユーザがそのディレクトリ下にテンポラリファイルを生成・削除するのが慣習である。稿では、これらのデ

  • gcov の使い方 - まめめも

    concov のドキュメントを書こうと思ったけれど、何から書くか困ったので、とりあえずその前に gcov の使い方とはまりどころを書いてみます。 gcov とは C 言語で書かれたプログラムのカバレッジを測定するツールです。gcc に付属しています。 基的な使い方 こういうコードがあるとする。 /* test.c */ #include <stdio.h> int foo(int x, int y) { return x + y; } int bar(int x, int y) { return x - y; } int main(void) { printf("%d\n", foo(2, 3)); printf("%d\n", foo(3, 4)); return 0; } コンパイルする。-coverage をつけると gcov 用のオブジェクトファイルが生成される *1 。 $ g

    gcov の使い方 - まめめも
    i_ogi
    i_ogi 2009/07/22
    C 言語で書かれたプログラムのカバレッジを測定するツールです。gcc に付属しています。
  • 条件演算子・・・厨? - ぐるぐる~

    名前 症状 僕の状態 三項演算子厨 どんどんネストした三項演算子を書いてしまう.気が付くと自分でも良くわからなくなってる事もある 治療済み プログラマの麻疹 - YoshioriのBlog 三項演算子は多分条件演算子のことだろう、ってのはいいとして、ネストした条件演算子は書き方が悪いだけです!と言ってみる。 三項演算子?:の正しい書き方 で、ここのブクマコメに、id:nekora 「うーむ。一理あるような気がするけど、私ならifにする。」とか、id:PoohKid 「if文を1行で表記したいから三項演算子にするんだよね…」とか、id:sqrt 「改行したくなるほど複雑な表現になったら?:を諦めてif文などに置き換えるのがベストプラクティスだって偉い人がゆってた。だから、三項演算子は1行で書くのが正しい書き方。」とかあるんだけど・・・違うよ!全然違うよ! if 文を条件演算子で置き換えること

    条件演算子・・・厨? - ぐるぐる~
  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録

    一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、

    一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録
    i_ogi
    i_ogi 2009/07/06
    よく読まないとわかんないからブクマ
  • Debianがglibcの派生版「eglibc」を採用へ - @IT

    2009/05/07 Debian GNU/Linuxで、C言語の標準ライブラリである「GNU C Library」(glibc)が、その派生版である「Embedded GLIBC」(eglibc)に置き換わる可能性が出てきた。現在はまだDebianの開発版に入る前という段階だが、もし実現すれば、Debian系のディストリビューションであるUbuntuやKnoppix、Xandrosでも置き換わる可能性が高い。家ともいえるFree Software FoundationのGNU版のライブラリをさしおいて、派生版がDebianに入る可能性が高まったことで、ちょっとした波紋が広がっている。eglibcプロジェクトではglibcとの高い互換性を目標に掲げているものの、glibcは、Linux上のサーバソフトウェアを含む多くのアプリケーションが依存しているライブラリだけに、今後の影響範囲が見えづ

    i_ogi
    i_ogi 2009/05/08
    「eglibcのミッション定義には、開発者の間で協力やコミュニケーション、礼儀正しさ、敬意といったものを促すようにと書かれている。これは、当てこすりとまでは言わないまでも、glibc開発コミュニティに対するメッセー
  • #if 0ハックすごくね?すげーってw - Seasons.NET

    #If 0ってC,C++では、#endifまで問答無用でコメントにしますが、 これを使ったハックがすごく便利。 元ネタ http://gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net #if 0 #!/bin/sh gcc -o a a.c exit #endif int main( void ) { printf( "Hello\n"); return 1; } これを保存して、実行属性をつけてから(chmod 755とか) ターミナルで、 # ./a.c と打ち込むと、 aという実行ファイルが生成される。 んで、./aと打ち込むと Helloと表示される。 今までは、Makefileか直接、gcc -o a a.cとかやっていた作業が、 ソースコード+Makefileの代わりになるわけ。 なぜこんな事ができるかってーと、 shのシェルスクリ

    #if 0ハックすごくね?すげーってw - Seasons.NET
  • バックナンバー – おくvillage

  • ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ

    ltrace で共有ライブラリの関数呼び出しをトレースする ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです。システムコールをトレースするstrace と同様に、デバッグに大変役立ちます。 ltrace は Debian GNU/Linux の場合は sudo apt-get install ltrace でインストールできます。 ltrace の使い方は簡単です。基的には ltrace コマンドの引数にトレースしたいコマンドとその引数を並べれば OK です。デフォルトでは ltrace のメッセージは標準エラーに出力されます。これをファイルに出力させるには -o オプションを用います。たとえば、次のように実行します。 % ltrace -o log.txt wget https://www.codeblog.org/ この例では wget が ht

  • リンクされているライブラリによってプログラムの動作を変える - bkブログ

    リンクされているライブラリによってプログラムの動作を変える weak シンボルを用いると、リンクされているライブラリによってプログラムの動作を変えることができます。ここでは GNU 拡張を用いて weak シンボルを利用する方法を紹介します。 それではさっそくサンプルコードを見てみましょう。このプログラムでは、libm に含まれる sqrt() 関数があるときは利用し、ない場合はその旨のメッセージを表示します。 weak.c #include <stdio.h> extern double sqrt(double x) __attribute__ ((weak)); void func () { if (sqrt) { printf("%f\n", sqrt(10.0)); } else { printf("sqrt isn't available\n"); } } weak-main.c

  • モノーキ〜デバッグパターン

    デザインパターンを勉強していて、ふとデバッグにもパターンがあるよな。 と思って作ってみました。 これって、どこかに協力を仰ぎたいけど、誰に頼むんだ? (結果的に協力してもらいました。thanks XPMLの皆さん、lemonさん) 何かおもいついた方はこちらへメールか、掲示板へ プログラマ用セキュリティホールパターンってのが欲しいな 例えばSQL injectionとかいうセキュリティホール。 こんなの知らないと絶対やってしまう。 OSとかの設定ではなく、プログラマの設計において注意するセキュリティホールのパターンが欲しい。 集計などはやってもいいので、どこかで有志を募って集めてくれませんかね? ○デバッグパターンについて ・デバッグパターンとはプログラマから観測できる現象とそれに対する原因と対策をパターンとして登録したものです。中にはアンチパターンという、やってはいけないパターンも存在し

  • C/C++ リファレンス

  • いやなブログ: c アーカイブ

    Unicode の文字列をソースコードに埋め込む方法 Unicode の文字列をソースコードに埋め込む場合、直接 UTF-8 などで文字列を書く方法と、\uXXXX などのようにエスケープして表記する方法があります。後者の方法についてまとめてみました。 続きを読む...

  • ソースコードを読むための技術

    $Id: readingcode.html,v 1.13 2003/12/06 00:01:08 aamine Exp $ 2006-05-02 gonzui 追加。thanks: 冨山さん 2003-12-03 ltrace と sotrace を追加 2003-12-03 ツールのところに DDD を追加。thanks: 和田さん 2003-05-27 VCG, SXT などについて追加。thanks: 梅沢さん 2003-05-27 これもすっかり忘れていた strace, ktrace, truss, etags などについて追加 2002-08-30 すっかり忘れていた ctags を追加 2002-07-07 匿名希望さんからメールでいただいた情報を追加 (動的コールグラフ) 2002-06-13 日記経由でいただいた意見をもとに文章を追加。thanks: 柳川さん、まつもとさ

  • 共有ライブラリの説明

    3. 共有ライブラリ共有ライブラリは、プログラム起動時にロードされるライブラリです。 共有ライブラリが適切にインストールされると、その後に起動される全てのプログラムは、自動的にその新しい共有ライブラリを使うことになります。 実際には、これよりもはるかに柔軟で洗練されています。なぜなら、Linux における共有ライブラリの実現方法のおかげで、次のことが可能となるからです。 ライブラリを更新しながらも、そのライブラリの古くて後方互換性のないバージョンを使いたいというプログラムを、引き続きサポートすることができる特定のプログラムを実行するとき、特定のライブラリ、もしくはライブラリ内の特定の関数でさえもオーバーライドすることができる既存のライブラリを使用してプログラムが動いている間にも、これら全てをおこなうことができる 3.1. 約束ごとこれらの望ましい特性すべてを共有ライブラリがサポートするため

    i_ogi
    i_ogi 2005/12/09
    共有ライブラリ名、ロードの仕組み、環境変数(LD_LIBRARY_PATH etc)、互換性
  • 1