8149714: [parfait] char array lengths don't match in awt_Font.cpp:1701
Reviewed-by: serb, ssadetsky
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Font.cpp Wed Jul 27 15:32:25 2016 +0300
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Font.cpp Thu Jul 28 06:02:40 2016 -0700
@@ -1679,6 +1679,8 @@
CSegTableManager g_segTableManager;
+#define KEYLEN 16
+
class CCombinedSegTable : public CSegTableComponent
{
public:
@@ -1689,7 +1691,7 @@
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;
@@ -1697,7 +1699,7 @@
CEUDCSegTable* m_pEUDCSegTable;
};
-char CCombinedSegTable::m_szCodePageSubkey[16] = "";
+char CCombinedSegTable::m_szCodePageSubkey[KEYLEN] = "";
WCHAR CCombinedSegTable::m_szDefaultEUDCFile[_MAX_PATH] = L"";
@@ -1729,8 +1731,11 @@
}
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;