locked
Calling GetBindInfo() in StartEx causes AJAX POST data to be dropped RRS feed

  • Question

  • Hi,

    I've used some Chromium code as a baseline to do V-table patching in order to intercept Ajax requests.

    In my StartEx routine, I call GetBindInfo() in order to obtain POST data, as laid out in this article: http://support.microsoft.com/kb/280522

              BINDINFO bindinfo;
              DWORD    bindf = 0;
              bindinfo.cbSize = sizeof(BINDINFO);
      hr = bind_info->GetBindInfo(&bindf,&bindinfo);

    The problem I am seeing is that everything works perfectly with IE9, but with IE10, any call to GetBindInfo() results in ajax post data not being sent with the request.

    To recreate:
    1) Use IE10
    2) V-Table hook IE's default StartEx method and call GetBindInfo() and then call the default StartEx method.
    3) Issue any AJAX POST request
    4) You will see that the POST data is not sent with the request.

    Using IE9 everything works perfectly.
    Using IE10 and removing the call to GetBindInfo(), everything works perfectly.

    Is this a known IE10 bug?
    Anyone know of a workaround?

    Thanks for listening!

    • Edited by LastPass Thursday, May 9, 2013 5:02 PM clarification
    Friday, April 26, 2013 7:31 PM

All replies

  • Maybe you need to write code that checks the size of the BINDINFO structure.

    Have a look at this: http://msdn.microsoft.com/zh-HK/library/aa741006(v=vs.85).aspx#Handling_BINDINFO_St


    Lazylamb loves smelly cat.

    Tuesday, April 30, 2013 7:59 AM
  • Unfortunately that isn't applicable - my program is the the one that is calling GetBindInfo() as outlined in http://support.microsoft.com/kb/280522:

              DWORD    bindf = 0;
              BINDINFO bindinfo;
              memset(&bindinfo,0,sizeof(BINDINFO));
              bindinfo.cbSize = sizeof(BINDINFO);
     hr = bind_info->GetBindInfo(&bindf,&bindinfo);         // THIS CAUSES MAJOR PROBLEMS...I'M STUCK

    Any other ideas?
    Thanks.


    Tuesday, April 30, 2013 6:18 PM
  • Does anyone have any ideas on this?

    Thursday, May 9, 2013 5:03 PM
  • I'm experiencing the same issue. It looks like GetBindInfo() works as a delete call for some Ajax requests - once you've called it the post data is lost.

    I've tried different approaches with no luck so far.

    Does anyone have found a solution?

    Thanks

    Tuesday, June 18, 2013 3:15 PM
  • Also having this problem. Has someone filed a bug with Microsoft about this?
    Thursday, August 8, 2013 2:24 PM
  • After some more investigation, it is clear that GetBindInfo() and GetBindInfoEx() are methods intended to be called once per protocol invocation. Since the default implementation of HTTP/HTTPS StartEx() calls GetBindInfoEx(), you can't call it yourself. (It works in IE<=9 but I guess we can consider that a happy coincidence.)

    I solved this using Igor Tandetnik's Passthrough APP. You can override GetBindInfoEx() in your sink implementation and get whatever you want from the BINDINFO after passing the call on to the default implementation.

    I placed the latest sources for Passthrough APP, extended to build with IE9 headers, at https://github.com/salsita/passthruapp.

    Matt
    Thursday, August 8, 2013 3:32 PM