- 追加された行はこの色です。
- 削除された行はこの色です。
* ふぁんくらぶ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;決して真にならない条件 → |||完了|rev1905|非該当|
|2|・macro\CSMacroMgr.cpp L711 *p++;&br;意味のない式 → p++;|完了|rev1905||
|3|・mem\CMemory.cpp L220 p = (unsigned char*)pdwchar;&br;pdwcharが不定の場合あり|完了|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