fix(inputs.win_wmi): Restrict threading model to APARTMENTTHREADED (#16781)

This commit is contained in:
Sven Rebhan 2025-04-16 16:09:54 +02:00 committed by GitHub
parent 859e55cd6b
commit 0195c4e966
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 4 deletions

View File

@ -75,10 +75,10 @@ func (m *method) execute(acc telegraf.Accumulator) error {
defer runtime.UnlockOSThread()
// Init the COM client
if err := ole.CoInitializeEx(0, ole.COINIT_MULTITHREADED); err != nil {
if err := ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED); err != nil {
var oleCode *ole.OleError
if errors.As(err, &oleCode) && oleCode.Code() != ole.S_OK && oleCode.Code() != sFalse {
return err
if !errors.As(err, &oleCode) || (oleCode.Code() != ole.S_OK && oleCode.Code() != sFalse) {
return fmt.Errorf("initialization of COM object failed: %w", err)
}
}
defer ole.CoUninitialize()
@ -86,7 +86,7 @@ func (m *method) execute(acc telegraf.Accumulator) error {
// Initialize the WMI service
locator, err := oleutil.CreateObject("WbemScripting.SWbemLocator")
if err != nil {
return err
return fmt.Errorf("creation of OLE object failed: %w", err)
}
if locator == nil {
return errors.New("failed to create WbemScripting.SWbemLocator, maybe WMI is broken")