Don't write outside the array in SetupDiGetClassDevPropertySheetsW

svn path=/trunk/; revision=19794
This commit is contained in:
Hervé Poussineau 2005-12-01 10:52:16 +00:00
parent 5073c262ee
commit de42f618e0

View file

@ -3733,14 +3733,14 @@ BOOL WINAPI SetupDiGetClassDevPropertySheetsW(
Request.DeviceInfoSet = DeviceInfoSet; Request.DeviceInfoSet = DeviceInfoSet;
Request.DeviceInfoData = DeviceInfoData; Request.DeviceInfoData = DeviceInfoData;
PropPageData.PropertySheetPages = &PropertySheetHeader->phpage[PropertySheetHeader->nPages]; PropPageData.PropertySheetPages = &PropertySheetHeader->phpage[PropertySheetHeader->nPages];
PropPageData.MaximumNumberOfPages = PropertySheetHeaderPageListSize; PropPageData.MaximumNumberOfPages = PropertySheetHeaderPageListSize - PropertySheetHeader->nPages;
PropPageData.NumberOfPages = 0; PropPageData.NumberOfPages = 0;
ret = pPropPageProvider(&Request, GetClassDevPropertySheetsCallback, (LPARAM)&PropPageData); ret = pPropPageProvider(&Request, GetClassDevPropertySheetsCallback, (LPARAM)&PropPageData);
if (!ret) if (!ret)
goto cleanup; goto cleanup;
if (RequiredSize) if (RequiredSize)
*RequiredSize = PropPageData.NumberOfPages; *RequiredSize = PropPageData.NumberOfPages + PropertySheetHeader->nPages;
if (PropPageData.NumberOfPages <= PropPageData.MaximumNumberOfPages) if (PropPageData.NumberOfPages <= PropPageData.MaximumNumberOfPages)
{ {
PropertySheetHeader->nPages += PropPageData.NumberOfPages; PropertySheetHeader->nPages += PropPageData.NumberOfPages;