2005-01-01から1年間の記事一覧

「C++と組み込み環境」

C++

というblogを見つけました。こちらです。組み込みと銘打っていますが、C開発者向けにC++のpitfallを解説した記事として大変に有益と思います。C++規格の章番号を出して解説してくれているのは大変goodですね。 個人的には9月の記事、8月の記事がツボ。

signed intでの配列アクセスはマジヤバイ(こともある)

C++

次のC/C++なコードには問題があります。 #define A_SIZE 6 static int a[A_SIZE]; void vuln(int n, int val) { assert(n < A_SIZE); a[n] = val; }配列アクセスの添字となる変数aの方が signed int なのが問題です。nとして負数を渡すと面白い(というか恐…

integer overflow 流行りな昨今 (3)

現実的な解決策 in C++ でも、クイズに書いたようなオーバーフローって、なかなか防ぎきれないんですよね。 技術力を向上する がんばってレビューする 静的なコード検査ツールを使う(QAC++とか、PolySpaceとか、これとか) などが王道かとは思いますが、学習…

integer overflow 流行りな昨今 (2)

前回(クイズ)の続きです。自分で解いてみた結果を貼っておきます。(8)とか(9)はそれなりに面白いかと。

GCC-4.1.0 and ProPolice/SH

えとーさんに教えてもらって参加した SEA & FSIJ 合同フォーラム2005年12月 「GCC行く年来る年」で伺ったところによると、GCCの4.1でIBM東京基礎研のProPoliceがマージされて、しかもx86だけでなく、x86_64, ppc, sparc, s390, そしてshがサポートされるそう…

operator newの隠れた整数オーバーフローとVisualStudio 2005のVC++

C++

void vuln(std::size_t nelem) { int* p = new int[nelem]; std::memset(p, 12345, nelem); }上記の関数には整数オーバーフローに起因するヒープベースバッファオーバーフローの脆弱性があるんですが、どこがまずいかわかりますか? まずいのはnewしている部…

GCCの-ftrapv

gcc -ftrapv 最近のGCC(>=3.x)には-ftrapvというオプションがあって、これを有効にすると「符号あり整数同士の加算・減算・乗算でオーバーフロー/アンダーフローが発生したとき、プロセスをabort()」してくれます。例えば、INT_MAX + 1 とか INT_MIN - 1 と…

g++ の -fthreadsafe-statics ってオプション知ってます?

C++

古来より、関数スコープの静的なオブジェクトを作るのは危険 void foo() { static CBar bar; // こんなの とされています。foo()が初めて呼ばれたタイミングでbarのコンストラクタが走るわけですが(C++規格でそう決まっている)、foo()の初回呼び出しが2つの…

C++例外がCのコード中を通過するとクラッシュする件

C++

woさんに教えていただいた件 (http://d.hatena.ne.jp/w_o/20051203#p3)、遅くなりましたが、現象確認しました。次のコードで再現しますね。 $ cat a.cpp extern "C" { void b(); void a() { throw 123; } } int main() { try { b(); } catch(...) {} } $ cat…

integer overflow 流行りな昨今

最近、integer overflowが根本原因のセキュリティホールを良く見かけます。普通のバッファオーバーフローについては世間の理解が進んで、最近では char buf[1024] = {0}; char* dst = buf; while(*src != '=') *dst++ = *src++; // 1023文字目までに = が存…

binary 2.0 (ライトニングトークス)

大和さん@RedHat Binareal - バイナリファイルの構造と解釈 tcpdumpは構造改革によってetherealになった objdumpを改革するとbinarealになる! 野首さん いけないお化粧magic(5) swfによるプレゼンテーション! 「タイトルの由来がわかる人はお年です」 magi…

binary 2.0 カンファレンス参加

縁あってカンファレンスを見に行くことができました。印象に残ったキーワード等を並べてみます。 高林さん Binary 2.0 時代の到来 冒頭から会場中が笑いの渦。プレゼンが(やっぱり)すごく面白い。 「2.0がついていればなんでもよかった」 「signalを深追い…