summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp13
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;