Reluctantly tolerated by Darin Adler.
authorggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2007 15:18:35 +0000 (15:18 +0000)
committerggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2007 15:18:35 +0000 (15:18 +0000)
commitc8d7eea2f1a357b86590fd9d36a211ab6f405c72
tree6f81cd36c6ea4bfdcf5b72e345972153860deff4
parentca64f798a4fc2882e2326cebc9ae4cf70f4b7113
    Reluctantly tolerated by Darin Adler.

        Fixed <rdar://problem/5091330> REGRESSION: Repro crash in
        -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:]
        navigating away from page with DivX movie plug-in (13203)

        The problem was that the DivX plug-in would ask us to destroy an NPStream
        that had already been destroyed, causing us to wander off into freed
        memory. (I believe the reason this was a regression was that we never used
        to destroy plug-in streams, period.)

        The solution here is to track the NPStreams belonging to a plug-in, and
        guard against plug-ins making calls with NPStreams that don't belong to
        them. (It turns out that NPN_DestroyStream is the only stream-based
        plug-in call we support.)

        (CarbonPathFromPOSIXPath): Fixed up a cast to be C++ compatible.
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView destroyStream:reason:]): The actual fix.
        Use helper method to guard against a plug-in using an NPStream that doesn't
        belong to it.
        * WebKit.xcodeproj/project.pbxproj: Made WebBaseNetscapePluginView ObjC++
        so I could use HashMap.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@20571 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/Plugins/WebBaseNetscapePluginStream.h
WebKit/Plugins/WebBaseNetscapePluginStream.m
WebKit/Plugins/WebBaseNetscapePluginView.mm
WebKit/WebKit.xcodeproj/project.pbxproj