e437.c

型違い引数


原作: short size = 0x8000; memset(buf , 0 , size);
修正案: size_t size = 0x8000; memset(buf , 0 , size);

解説: memset() / memcpy() の第3引数に short 型を使用し 0x8000 以上の値が設定された場合符号拡張が発生して 0xFFFF8000 が引数として渡り、メモリ破壊を起こす事が 考えられます。 極力符号付きのせまい型 (char / short) を 使用しない事を推奨します。