◀ANSI版開発トップへ
  • 4644 trunk#1028でオーバーラン書き込み
    • 4645 RE: trunk#1028でオーバーラン書き込み
  • [4644] trunk#1028でオーバーラン書き込み ryoji 2006年12月16日 21:29

    最新のtrunk#1028ですが、VS2005(SP1)でビルドしてみたら、

    cdlgfunclist.cpp(1134) :
    warning C4789: メモリ コピーのターゲットが小さすぎます

    との警告が出ました。
    memset(szTypeOption, '\0', sizeof(szText));
    の行です。
    char szTypeOption[256];
    char szText[2048];
    なのでバッファオーバーラン書き込みになってます。
    • [4645] RE: trunk#1028でオーバーラン書き込み げんた 2006年12月17日 02:08

      >との警告が出ました。
      >memset(szTypeOption, '\0', sizeof(szText));
      >の行です。
      >char szTypeOption[256];
      >char szText[2048];
      >なのでバッファオーバーラン書き込みになってます。
      ありゃー,szOptionに置き換えたところでサイズの判定がことごとく修正漏れですね.
      全然気付かなかったです.

      そこまで大きくはみ出していればスタックを壊されてまともに動けるはずがない...と思ってよく見たら,ご指摘の箇所は異常ルートなのですね.通らなければ気付かないのが動的チェックの限界ですね.

      #1617078にパッチ出しました.