http://bugs.winehq.org/show_bug.cgi?id=31037
Bug #: 31037 Summary: Microsoft SQL Server 2005 Express Edition: SQL Server System Configuration Checker fails (Win32_Processor class table row count not set) Product: Wine Version: 1.5.7 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: wmi&wbemprox AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello,
continuation of bug 30089
The app crashes while trying to retrieve "CpuStatus" property of "Win32_Processor" class.
--- snip --- Creating class instance Win32_Processor CreateInstanceEnum Win32_Processor returned 0 (0x0) Enumerating the first class of Win32_Processor EnumClass of Win32_Processor returned 1 (0x1) Getting property CpuStatus <boom> --- snip ---
"CpuStatus" property was implemented by commit http://source.winehq.org/git/wine.git/commitdiff/661d7f19c98b72af18c9487a87f...
Code: http://source.winehq.org/git/wine.git/blob/661d7f19c98b72af18c9487a87fd5a5f0...
--- snip --- 361 static void fill_processor( struct table *table ) 362 { 363 static const WCHAR fmtW[] = {'C','P','U','%','u',0}; 364 WCHAR device_id[14]; 365 struct record_processor *rec; 366 UINT i, offset = 0, count = get_processor_count(); 367 368 if (!(table->data = heap_alloc( sizeof(*rec) * count ))) return; 369 370 for (i = 0; i < count; i++) 371 { 372 rec = (struct record_processor *)(table->data + offset); 373 rec->cpu_status = 1; /* CPU Enabled */ 374 rec->manufacturer = processor_manufacturerW; 375 sprintfW( device_id, fmtW, i ); 376 rec->device_id = heap_strdupW( device_id ); 377 offset += sizeof(*rec); 378 } 379 } --- snip ---
The table row count (number of processor items) is not set hence class object iterator (next) will fail later, leading to crash.
With row count fixed, the crash is gone and the app encounters next WMI insufficiency ;-)
Regards