guix-devel/gnu/packages/patches/icecat-CVE-2016-1930-pt04.p...

48 lines
2.0 KiB
Diff

Copied from: https://hg.mozilla.org/releases/mozilla-esr38/rev/6d43ff33bd55
Security advisory: https://www.mozilla.org/en-US/security/advisories/mfsa2016-01/
Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1223670
# HG changeset patch
# User Karl Tomlinson <karlt+@karlt.net>
# Date 1451362442 -46800
# Node ID 6d43ff33bd552b8f7a34e4105cf5bcc0a8c8ea8c
# Parent f746c38d160ea29088c15cacae44f3662befaec5
bug 1223670 throw not supported when creating a node from a stream with different channel r=baku a=abillings
diff --git a/dom/media/webaudio/MediaStreamAudioSourceNode.cpp b/dom/media/webaudio/MediaStreamAudioSourceNode.cpp
--- a/dom/media/webaudio/MediaStreamAudioSourceNode.cpp
+++ b/dom/media/webaudio/MediaStreamAudioSourceNode.cpp
@@ -51,21 +51,29 @@ MediaStreamAudioSourceNode::Create(Audio
}
return node.forget();
}
void
MediaStreamAudioSourceNode::Init(DOMMediaStream* aMediaStream, ErrorResult& aRv)
{
+ MOZ_ASSERT(aMediaStream);
+ MediaStream* inputStream = aMediaStream->GetStream();
+ MediaStreamGraph* graph = Context()->Graph();
+ if (NS_WARN_IF(graph != inputStream->Graph())) {
+ aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return;
+ }
+
mInputStream = aMediaStream;
AudioNodeEngine* engine = new MediaStreamAudioSourceNodeEngine(this);
- mStream = Context()->Graph()->CreateAudioNodeExternalInputStream(engine);
+ mStream = graph->CreateAudioNodeExternalInputStream(engine);
ProcessedMediaStream* outputStream = static_cast<ProcessedMediaStream*>(mStream.get());
- mInputPort = outputStream->AllocateInputPort(aMediaStream->GetStream(),
+ mInputPort = outputStream->AllocateInputPort(inputStream,
MediaInputPort::FLAG_BLOCK_INPUT);
mInputStream->AddConsumerToKeepAlive(static_cast<nsIDOMEventTarget*>(this));
PrincipalChanged(mInputStream); // trigger enabling/disabling of the connector
mInputStream->AddPrincipalChangeObserver(this);
}
MediaStreamAudioSourceNode::~MediaStreamAudioSourceNode()