バッファオーバーフローのコベリティの問題を修正するために、strncpy()を使用してリストアイテムをコピーしました。リストアイテムは、ある行から別の行にドラッグアンドドロップする必要があります。したがって、コピーする必要のある文字列には、「\ n」、「\ t」、および「」の文字が含まれます。
以下のコードを使用しました。
for (int nColumn = 1; nColumn < nColumns; nColumn++)
{
strncpy(lvItem.pszText, (LPCTSTR)(GetItemText(nDragIndex, nColumn)), sizeof(lvItem.pszText)-1);
lvItem.pszText[sizeof(lvItem.pszText)] = '\0';
lvItem.iSubItem = nColumn;
SetItem(&lvItem);
}
コベリティスキャンは合格しましたが、一部の列のデータが切り捨てられます。strcpy_sメソッドの使用について聞いたことがありますが、利用できません。誰かが私が問題を解決するのを手伝ってもらえますか?
あなたのコードは間違っていて、あなたが期待することをしません。lvItem.pszText
はポインタであり、プロジェクトの種類に応じて、それぞれ4バイトの固定サイズになります。したがって、sizeof演算子によって切り捨てが発生します。
LVITEM
このように使用するには、これがあなたによって定義されたバッファが必要です!
を使用する場合はGetIemText
、CListCtrl :: SetItemTextを使用することもできます。この関数はすべての制限を処理します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加