Windows 2000で Chrome の同期機能を使うとクラッシュする理由

Chrome で クラッシュする理由がついに判明!

base/crypto/rsa_private_key_unittest.cc 内の

keypair1->ExportPrivateKey(&privkey1)
呼出し前に、 keypair1がNULLになっているのが原因

なんで NULLになってるかというと

/src/crypto/rsa_private_key_win.cc のしょっぱなの Initで keypair1 がNULL返してるからなんだけど、

/src/crypto/hmac_win.cc

  KeyBlob* key_blob = reinterpret_cast<KeyBlob*>(&key_blob_storage[0]);
  key_blob->header.bType = PLAINTEXTKEYBLOB;
  key_blob->header.bVersion = CUR_BLOB_VERSION;
  key_blob->header.reserved = 0;
  key_blob->header.aiKeyAlg = CALG_RC2;
  key_blob->key_size = key_length;
  memcpy(key_blob->key_data, key, key_length);

  if (!CryptImportKey(plat_->provider_, &key_blob_storage[0],
                      key_blob_storage.size(), 0, CRYPT_IPSEC_HMAC_KEY,
                      plat_->key_.receive())) {

なんてやってるからだったり.

これ、Firefox 3.6のコードもコメントも(リンク先めちゃくちゃ重いです.注意)そのままコピーしてあるような

と、逆アセンブルしていて気付いたのでした

....というか、Firefox 3.6は何で落ちないんだろう

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です