Project

General

Profile

Bug #5334

Segmentation fault in InternetExplorer IServiceProvider interface

Added by oregev (Ofer Regev) about 8 years ago. Updated over 7 years ago.

Status:
Assigned
Priority:
Normal
Target version:
-
ruby -v:
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
Backport:
[ruby-core:39616]

Description

The following code causes a segmentation fault in Ruby 1.9.2:

require 'win32ole'
browser = WIN32OLE.new("InternetExplorer.Application")
provider = browser.ole_query_interface("{6D5140C1-7436-11CE-8034-00AA006009FA}")
provider.ole_obj_help

History

Updated by ko1 (Koichi Sasada) over 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to arton (Akio Tajima)

Updated by mame (Yusuke Endoh) over 7 years ago

  • Assignee changed from arton (Akio Tajima) to suke (Masaki Suketa)

Suketa-san,

Could you please check this ticket?

--
Yusuke Endoh mame@tsg.ne.jp

Updated by phasis68 (Heesob Park) over 7 years ago

This segmentation fault raised at #4396 of win32ole.c
hr = pole->pDispatch->lpVtbl->GetTypeInfo( pole->pDispatch, 0, lcid, &pTypeInfo );

According to the document(http://msdn.microsoft.com/en-us/library/cc678965(v=vs.85).aspx),
the IServiceProvider interface has only one member, QueryService, through which a caller specifies the service ID (SID, a GUID), the IID of the interface to return, and the address of the caller's interface pointer variable.

The IServiceProvider interface does not have GetTypeInfo member function, so you cannot use WIN32OLE#ole_type or WIN32OLE#ole_obj_help which calls GetTypeInfo function.

It seems difficult to detect which interface has GetTypeInfo member function or not in the code level.

Also available in: Atom PDF