diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp index df38f014fd..64834db325 100644 --- a/src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp +++ b/src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp @@ -31,9 +31,12 @@ #include "CSSHelper.h" #include "CSSPropertyNames.h" #include "CSSValueKeywords.h" +#include "DocLoader.h" #include "Event.h" #include "EventNames.h" #include "ExceptionCode.h" +#include "Frame.h" +#include "FrameLoader.h" #include "HTMLDocument.h" #include "HTMLNames.h" #include "HTMLSourceElement.h" @@ -271,6 +274,8 @@ float HTMLMediaElement::bufferingRate() void HTMLMediaElement::load(ExceptionCode& ec) { String mediaSrc; + Frame* frame = document()->frame(); + FrameLoader* loader = frame ? frame->loader() : 0; // 3.14.9.4. Loading the media resource // 1 @@ -323,6 +328,14 @@ void HTMLMediaElement::load(ExceptionCode& ec) ec = INVALID_STATE_ERR; goto end; } + + // don't allow remote to local urls + if (!loader || !loader->canLoad(KURL(KURL(), mediaSrc), String(), document())) { + FrameLoader::reportLocalLoadFailed(frame, mediaSrc); + + ec = INVALID_STATE_ERR; + goto end; + } // 7 m_networkState = LOADING; |