ENUMLOGFONTEXA EnumLogFontExA;
NEWTEXTMETRICEXA NewTextMetricExA;
LOGFONTW lfW;
- LONG DataSize, InfoCount;
+ LONG InfoCount;
+ ULONG DataSize;
+ NTSTATUS Status;
DataSize = INITIAL_FAMILY_COUNT * sizeof(FONTFAMILYINFO);
Info = RtlAllocateHeap(GetProcessHeap(), 0, DataSize);
if (INITIAL_FAMILY_COUNT < InfoCount)
{
RtlFreeHeap(GetProcessHeap(), 0, Info);
- DataSize = InfoCount * sizeof(FONTFAMILYINFO);
+
+ Status = RtlULongMult(InfoCount, sizeof(FONTFAMILYINFO), &DataSize);
+ if (!NT_SUCCESS(Status) || DataSize > LONG_MAX)
+ {
+ DPRINT1("Overflowed.\n");
+ return 1;
+ }
Info = RtlAllocateHeap(GetProcessHeap(), 0, DataSize);
if (Info == NULL)
{