heartbleed エクスプロイトについて読みましたが、これは memcpy の間違いでした。
void * memcpy( void * dest, const void *src, size_t len );
memcpy の適切な呼び出しは次のようになります。
int a[4711] [4711];
int b[4711] [4711];
/* initialize a */
(void) memcpy( &b [0] [0], &a [0] [0], sizeof( a ) );
しかし、なぜ 3 番目のパラメーターが src のサイズと異なるのでしょうか? dest サイズが使用されている他の例を見てきましたが、いつそれを行う必要がありますか?