Fóruns: 開発者 (Thread #21891)

Endian 問題について (2009-03-03 12:07 by cielquis #42272)

トラッカー::バグの「md5でバイトオーダーが考慮されていませんでした」への対応.

Endian (Big Endian/Little Endian) は実行時に判定する方向で修正する.現在のところ,Big Endian/Little Endian 以外 (PDP Endian, 他?) への対応は考えていない.

md5, sha1 は,中身では int の配列を用いて計算し,最後に char 配列にコピーする形で実装している.そのため,int 配列 <-> char 配列のコピー時に Endian 問題が絡んでくると思われる.そこで,std::memcpy() を行っている箇所で Endian の判定を行い,Big Endian の場合は Endian を考慮してコピーを行うようにする.

現在把握しているのは,md5/sha1 のみ.その他のライブラリに同様の問題が潜在しているかどうかは未検証.

RE: Endian 問題について (2009-03-15 04:57 by cielquis #42554)

ひとまず修正は完了.ただし,未テストなので BigEndian の環境できちんと動作するかどうかの確証はなし.
Responder a #42272

RE: Endian 問題について (2009-03-23 00:43 by cielquis #42692)

修正方法についてのメモ.
http://d.hatena.ne.jp/tt_clown/20090322/p1
Responder a #42272