Lorsque vous essayez de récupérer un chemin de dossier massif à partir d'une boîte aux lettres Outlook (pas de 255 caractères max longueur dans le chemin) Je ne semble pas être le gérer correctement, mais j'ai tout essayé sur le code et rien semble faire la lumière sur la question.Débordement WCHAR lors de l'exécution de wcscpy_s
Path: \\Mailbox - long\Inbox\fgsegesgrgesrgegthtrhrthyerytyertytthgfhgdfhdfh\sfhsjkdfhsjkhfweuifhskjefhjksdhjsdhfusehfklahdfajkehwfuasdf\sadfhjaehjfhaeufhuaseh9oa3heufhshudhjksahdfjkshadmldhasnf\awefuyawefioaw3yfiuapgpapwqq0uwqfeiusdfsgpsadncabpaw\iawehfiowaeghuiaegfwuioaghpaweufrhasdfhlkasvjdhlaehfuawieghgawgwaef\fasbclajsbvbwaubhvwabveuabvdjklzbdvjkhzusefhzlhsdf\vshiuwhpqphdfhvjsamhashmasdfvhnakjdsfiawjeijfvsadkjfsa\aefrghjksadfhjklshareuhsadhsahvsandvnlsdffalsdfh384fhsduafhl\fasfdlashjklefrhuaehfskhaahsdfhuhaiyeifoa38fodasfhsahdfklkkasdf\jkfhsakdfjhsjkladfhdsjkahfjkajkflashdfjkshafjksahfsdjafhsdjahfjsahldfkasf\fauiwehfeawhfjkhsakjfhsjkaefheuifhjksdhjkafhjksadhfjhaseuhfasjhdjkfhasfjhaskjdfhslaf\jklshadjkfhasjkhfjkaheuyhruiyq3y83yuryvnzxcvxzcviouxzcvzxvklzxvkl
Path Length: 766 to 812 char
En espérant mieux l'expliquer un peu mieux, le code;
if(....)
{
size_t n = wcslen(outlookFolderPath->Value.lpszW);
if(n < 100)
wcscpy_s(m_szInheritedFolderPath, outlookFolderPath->Value.lpszW);
else
{
WCHAR szTemp[2048] = {}, szText[2048]= {};
LoadStringW(ghInstDLL, IDS_PATH_TRUNCATED, szText, 2048);
swprintf_s(szTemp, szText, outlookFolderPath->Value.lpszW + ((n-80) * sizeof(WCHAR)));
wcscpy_s(m_szInheritedFolderPath, szTemp); // *** Dies Here ***
}
}
...
L'erreur fatale occurrs à string.h
ligne;
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscpy_s, wchar_t, _Dest, _In_z_ const wchar_t *, _Source)