BugReport/74 のバックアップソース(No.8)



* ふぁんくらぶ14 237 [#ibfb0313]
-ページ:     [[BugReport]]
-投稿者:     [[ryoji]]
-優先順位:   低
-状態:       提案
-カテゴリー: 
-投稿日:     2011-04-04 (月) 21:15:33
-バージョン: ssrc-2-0-1-0.tar.gz

** メッセージ [#lace2e66]
237 :名無しさん@お腹いっぱい。:2011/04/04(月) 20:02:46.97 ID:3xroZ0rf0
    ・charset\codeutil.h L141 if( nSrcLen > 2 && nSrcLen < 1 ){
    決して真にならない条件 → ||
    ※この手のバグが非常に多い
    ・macro\CSMacroMgr.cpp L711 *p++;
    意味のない式 → p++;
    ・mem\CMemory.cpp L220 p = (unsigned char*)pdwchar;
    pdwcharが不定の場合あり
    ・mem\CNativeA.h L68,69,70,71,76,77,79,80
    mem\CNativeW.h L137,138,139,140,145,146,147,148,149,152,153,154,155,156
    戻り値を返さない関数で戻り値を返すコード
    ・prop\CPropComHelper.cpp L125,149,198
    コピー元のほうが大きい
    ※コピー先:MAX_PATH, コピー元:MAX_PATH+1
    パスの最後に¥を付けたいので+1しているところがあるが、結果を格納する先が+1してないのでダメ
    パスにファイル名をつなげてフルパスにすることを考えれば、MAX_PATH+1しても意味がないことはわかるはず
    ※この手のバグが非常に多い
    ・types\CType.cpp L74 for(int i=0;i<_countof(table) && i <= MAX_TYPES;i++){
    table定義サイズが小さいので問題ないが、2番目の条件は誤り
    ※この手のバグが非常に多い

    ※C++の配列の添え字は宣言したサイズ-1までです。
    × int a[5]; for(int i = 0; i <= 5; i++){ a[i] = i; }
    ○ int a[5]; for(int i = 0; i < 5; i++){ a[i] = i; }
    サクラのソースでは宣言したサイズまでをループさせてるところがあり1個オーバーしてメモリ破壊する。
    開発者の中にVBで育って勘違いしてる人がいると思われる。

    昔、掲示板に書こうとしてエラーになったのでそれ以来書いてない。
    どうせ開発者もココ見てるでしょ?

** 対処リスト [#ea403564]
''お手数ですが対処したら下の表の状態を更新してください.''
CENTER:''状態'':提案/着手/SVN待ち/完了/保留/却下

|''項番''|''内容''|''状態''|''対策Rev.''|''対策Rev.(ANSI版)''|
|1|・charset\codeutil.h L141 if( nSrcLen > 2 && nSrcLen < 1 ){&br;決して真にならない条件 → &#x7c;&#x7c;|完了|rev1905|非該当|
|2|・macro\CSMacroMgr.cpp L711 *p++;&br;意味のない式 → p++;|完了|rev1905|r1932|
|3|・mem\CMemory.cpp L220 p = (unsigned char*)pdwchar;&br;pdwcharが不定の場合あり|完了|rev1905|r1932|
|4|・mem\CNativeA.h L68,69,70,71,76,77,79,80&br;mem\CNativeW.h L137,138,139,140,145,146,147,148,149,152,153,154,155,156&br;戻り値を返さない関数で戻り値を返すコード|却下|[[対策不要>http://ja.wikipedia.org/wiki/Return%E6%96%87]]|←|
|5|・prop\CPropComHelper.cpp L125,149,198&br;コピー元のほうが大きい|提案|||
|6|・types\CType.cpp L74 for(int i=0;i<_countof(table) && i <= MAX_TYPES;i++){&br;table定義サイズが小さいので問題ないが、2番目の条件は誤り|完了|rev1905|非該当|

----
- 「戻り値を返さないvoid型関数でreturn (void型になる式);」とするのはそのほうが適切な場合もあるし記述者の好みやコーディングスタイルの問題であって禁止すべきではない --  &new{2011-04-06 (水) 09:47:11};

#comment
#attach

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS