summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorStephan Reiter <stephan.reiter@gmail.com>2017-07-17 17:14:40 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-19 09:40:31 +0000
commit9aa97da7ce17e0039fd8d588418d6c74efd36c6c (patch)
treefb5be30d6d9d4745377a677967d662a34bb9cbaf /src/core
parentc4efcbd282009411ba0ed319c44f535dfa9bacd8 (diff)
Do not send empty WebChannelIPCTransportHost_SendMessage
Task-number: QTBUG-61969 Change-Id: I3367889041614a5e7489909dd38c8af638edf17c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/renderer/web_channel_ipc_transport.cpp13
-rw-r--r--src/core/renderer_host/web_channel_ipc_transport_host.cpp1
2 files changed, 10 insertions, 4 deletions
diff --git a/src/core/renderer/web_channel_ipc_transport.cpp b/src/core/renderer/web_channel_ipc_transport.cpp
index 173b403a5..f34e1310b 100644
--- a/src/core/renderer/web_channel_ipc_transport.cpp
+++ b/src/core/renderer/web_channel_ipc_transport.cpp
@@ -68,25 +68,30 @@ private:
WebChannelTransport() { }
virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder(v8::Isolate *isolate) override;
- void NativeQtSendMessage(gin::Arguments *args)
+ bool NativeQtSendMessage(gin::Arguments *args)
{
content::RenderView *renderView = GetRenderView(args->isolate());
if (!renderView || args->Length() != 1)
- return;
+ return false;
v8::Handle<v8::Value> val;
args->GetNext(&val);
if (!val->IsString() && !val->IsStringObject())
- return;
+ return false;
v8::String::Utf8Value utf8(val->ToString());
QByteArray valueData(*utf8, utf8.length());
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(valueData, &error);
- if (error.error != QJsonParseError::NoError)
+ if (error.error != QJsonParseError::NoError) {
qWarning("%s %d: Parsing error: %s",__FILE__, __LINE__, qPrintable(error.errorString()));
+ return false;
+ }
int size = 0;
const char *rawData = doc.rawData(&size);
+ if (size == 0)
+ return false;
renderView->Send(new WebChannelIPCTransportHost_SendMessage(renderView->GetRoutingID(), std::vector<char>(rawData, rawData + size)));
+ return true;
}
DISALLOW_COPY_AND_ASSIGN(WebChannelTransport);
diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.cpp b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
index aef16f0a0..1cd4e4063 100644
--- a/src/core/renderer_host/web_channel_ipc_transport_host.cpp
+++ b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
@@ -87,6 +87,7 @@ void WebChannelIPCTransportHost::sendMessage(const QJsonObject &message)
void WebChannelIPCTransportHost::onWebChannelMessage(const std::vector<char> &message)
{
+ Q_ASSERT(!message.empty());
QJsonDocument doc = QJsonDocument::fromRawData(message.data(), message.size(), QJsonDocument::BypassValidation);
Q_ASSERT(doc.isObject());
Q_EMIT messageReceived(doc.object(), this);