From 74f5e8cdf53e16e2f53a73c7cdb7c41c4c8cda98 Mon Sep 17 00:00:00 2001 From: prr Date: Thu, 28 Jul 2016 06:02:40 -0700 Subject: [PATCH] 8149714: [parfait] char array lengths don't match in awt_Font.cpp:1701 Reviewed-by: serb, ssadetsky --- src/windows/native/sun/windows/awt_Font.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/windows/native/sun/windows/awt_Font.cpp b/src/windows/native/sun/windows/awt_Font.cpp index 76bdd84ff..8529daa8d 100644 --- a/src/windows/native/sun/windows/awt_Font.cpp +++ b/src/windows/native/sun/windows/awt_Font.cpp @@ -1651,6 +1651,8 @@ CSegTable* CSegTableManager::GetTable(LPCWSTR lpszFontName, BOOL fEUDC) CSegTableManager g_segTableManager; +#define KEYLEN 16 + class CCombinedSegTable : public CSegTableComponent { public: @@ -1661,7 +1663,7 @@ public: private: LPSTR GetCodePageSubkey(); void GetEUDCFileName(LPWSTR lpszFileName, int cchFileName); - static char m_szCodePageSubkey[16]; + static char m_szCodePageSubkey[KEYLEN]; static WCHAR m_szDefaultEUDCFile[_MAX_PATH]; static BOOL m_fEUDCSubKeyExist; static BOOL m_fTTEUDCFileExist; @@ -1669,7 +1671,7 @@ private: CEUDCSegTable* m_pEUDCSegTable; }; -char CCombinedSegTable::m_szCodePageSubkey[16] = ""; +char CCombinedSegTable::m_szCodePageSubkey[KEYLEN] = ""; WCHAR CCombinedSegTable::m_szDefaultEUDCFile[_MAX_PATH] = L""; @@ -1701,8 +1703,11 @@ LPSTR CCombinedSegTable::GetCodePageSubkey() } lpszCP++; // cf lpszCP = "932" - char szSubKey[80]; + char szSubKey[KEYLEN]; strcpy(szSubKey, "EUDC\\"); + if ((strlen(szSubKey) + strlen(lpszCP)) >= KEYLEN) { + return NULL; + } strcpy(&(szSubKey[strlen(szSubKey)]), lpszCP); strcpy(m_szCodePageSubkey, szSubKey); return m_szCodePageSubkey; -- GitLab