Changeset 82b700937130…
Parent 27ed9f9ad55a…
by
Changes to one file · Browse files at 82b700937130 Showing diff from parent 27ed9f9ad55a Diff from another changeset...
@@ -471,37 +471,34 @@ "CShellExt::GetCommandString: can't find idCmd " << idCmd);
}
- bool copied = false;
+ if (cchMax < 1)
+ return NOERROR;
+
size_t size = 0;
if (uFlags & GCS_UNICODE)
{
wchar_t* const dest = reinterpret_cast<wchar_t*>(pszName);
- *dest = 0;
const wchar_t* const src = _WCSTR(psz);
+
+ wcsncpy(dest, src, cchMax-1);
+ *(dest + cchMax-1) = 0;
+
size = wcslen(src);
- if (size < cchMax)
- {
- wcscpy(dest, src);
- copied = true;
- }
}
else
{
- *pszName = 0;
+ strncpy(pszName, psz, cchMax-1);
+ *(pszName + cchMax-1) = 0;
+
size = strlen(psz);
- if (size < cchMax)
- {
- strcpy(pszName, psz);
- copied = true;
- }
}
- if (!copied)
+ if (size > cchMax-1)
{
TDEBUG_TRACE(
- "CShellExt::GetCommandString: error: source string length ("
- << size << ") exceeds target buffer size (" << cchMax << ")");
+ "CShellExt::GetCommandString: string was truncated: size = "
+ << size << ", cchMax = " << cchMax);
}
return NOERROR;
|
Loading...