[Bug 31037] New: Microsoft SQL Server 2005 Express Edition: SQL Server System Configuration Checker fails (Win32_Processor class table row count not set)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Jun 27 04:36:13 CDT 2012


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 at winehq.org
        ReportedBy: focht at 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/661d7f19c98b72af18c9487a87fd5a5f08a75dfc

Code:
http://source.winehq.org/git/wine.git/blob/661d7f19c98b72af18c9487a87fd5a5f08a75dfc:/dlls/wbemprox/builtin.c#l361

--- 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list