Index: src/ch/AppHelper.cpp =================================================================== diff -u -rd5c3edd0d167db9b5d47d04248820fda49499a5e -raa6bff57279b9f9cfc276e9adab2763e2900878d --- src/ch/AppHelper.cpp (.../AppHelper.cpp) (revision d5c3edd0d167db9b5d47d04248820fda49499a5e) +++ src/ch/AppHelper.cpp (.../AppHelper.cpp) (revision aa6bff57279b9f9cfc276e9adab2763e2900878d) @@ -151,56 +151,64 @@ if (_tcsnicmp(pszString, _T(""), 9) == 0) { // get windows path - _tcscpy(szStr, m_pszProgramPath ? m_pszProgramPath : _t("")); - _tcscat(szStr, pszString+9); + _tcsncpy(szStr, m_pszProgramPath ? m_pszProgramPath : _t(""), _MAX_PATH); + szStr[_MAX_PATH - 1] = _T('\0'); + _tcsncat(szStr, pszString+9, _MAX_PATH - _tcslen(szStr)); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 9) == 0) { // get windows path UINT uiSize=GetWindowsDirectory(szStr, _MAX_PATH); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+9); + _tcsncat(szStr, pszString+9, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 6) == 0) // temp dir { // get windows path UINT uiSize=GetTempPath(_MAX_PATH, szStr); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+6); + _tcsncat(szStr, pszString+6, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 8) == 0) // system { // get windows path UINT uiSize=GetSystemDirectory(szStr, _MAX_PATH); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+8); + _tcsncat(szStr, pszString+8, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 9) == 0) // app data { // get windows path UINT uiSize=GetFolderLocation(CSIDL_LOCAL_APPDATA, szStr); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+9); + _tcsncat(szStr, pszString+9, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 9) == 0) // desktop { // get windows path UINT uiSize=GetFolderLocation(CSIDL_DESKTOPDIRECTORY, szStr); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+9); + _tcsncat(szStr, pszString+9, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } else if (_tcsnicmp(pszString, _T(""), 10) == 0) // personal... { // get windows path UINT uiSize=GetFolderLocation(CSIDL_PERSONAL, szStr); if (szStr[uiSize-1] == _T('\\')) szStr[uiSize-1]=_T('\0'); - _tcscat(szStr, pszString+10); + _tcsncat(szStr, pszString+10, _MAX_PATH - uiSize); + szStr[_MAX_PATH - 1] = _T('\0'); } // copy to src string