From 99e0c8c0e744e76571994728ace9f16556b7d342 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 23 Jan 2017 11:37:54 -0800 Subject: [PATCH 1/3] use fromUserInput in web entity URL set to avoid crashable URLs --- .../entities-renderer/src/RenderableWebEntityItem.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 4fdb6c84dd..2d8f52c67c 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -247,8 +247,15 @@ void RenderableWebEntityItem::render(RenderArgs* args) { void RenderableWebEntityItem::setSourceUrl(const QString& value) { if (_sourceUrl != value) { - qCDebug(entities) << "Setting web entity source URL to " << value; - _sourceUrl = value; + auto newURL = QUrl::fromUserInput(value); + + if (newURL.isValid()) { + qCDebug(entities) << "Setting web entity source URL to " << value; + _sourceUrl = newURL.toDisplayString(); + } else { + qCDebug(entities) << "Clearing web entity source URL since" << value << "cannot be parsed to a valid URL."; + } + if (_webSurface) { AbstractViewStateInterface::instance()->postLambdaEvent([this] { _webSurface->getRootItem()->setProperty("url", _sourceUrl); From d7651e98381ca7b3a2288cc3629745d7e2e4c905 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 23 Jan 2017 11:45:21 -0800 Subject: [PATCH 2/3] move value sanitizing to WebEntityItem --- .../src/RenderableWebEntityItem.cpp | 21 +++++++------------ libraries/entities/src/WebEntityItem.cpp | 9 +++++++- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 2d8f52c67c..7f68738bd5 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -246,21 +246,14 @@ void RenderableWebEntityItem::render(RenderArgs* args) { } void RenderableWebEntityItem::setSourceUrl(const QString& value) { - if (_sourceUrl != value) { - auto newURL = QUrl::fromUserInput(value); + auto valueBeforeSuperclassSet = _sourceUrl; - if (newURL.isValid()) { - qCDebug(entities) << "Setting web entity source URL to " << value; - _sourceUrl = newURL.toDisplayString(); - } else { - qCDebug(entities) << "Clearing web entity source URL since" << value << "cannot be parsed to a valid URL."; - } - - if (_webSurface) { - AbstractViewStateInterface::instance()->postLambdaEvent([this] { - _webSurface->getRootItem()->setProperty("url", _sourceUrl); - }); - } + WebEntityItem::setSourceUrl(value); + + if (_sourceUrl != valueBeforeSuperclassSet && _webSurface) { + AbstractViewStateInterface::instance()->postLambdaEvent([this] { + _webSurface->getRootItem()->setProperty("url", _sourceUrl); + }); } } diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index 735ec1812a..e8a69a390d 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -125,7 +125,14 @@ bool WebEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const g void WebEntityItem::setSourceUrl(const QString& value) { if (_sourceUrl != value) { - _sourceUrl = value; + auto newURL = QUrl::fromUserInput(value); + + if (newURL.isValid()) { + qCDebug(entities) << "Setting web entity source URL to " << value; + _sourceUrl = newURL.toDisplayString(); + } else { + qCDebug(entities) << "Clearing web entity source URL since" << value << "cannot be parsed to a valid URL."; + } } } From f02832ca71ba4b8a5a88fbdc8412f9a1bf253b8f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 23 Jan 2017 11:50:05 -0800 Subject: [PATCH 3/3] output the actual value set in WebEntityItem --- libraries/entities/src/WebEntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index e8a69a390d..38ececefa4 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -128,8 +128,8 @@ void WebEntityItem::setSourceUrl(const QString& value) { auto newURL = QUrl::fromUserInput(value); if (newURL.isValid()) { - qCDebug(entities) << "Setting web entity source URL to " << value; _sourceUrl = newURL.toDisplayString(); + qCDebug(entities) << "Changed web entity source URL to " << _sourceUrl; } else { qCDebug(entities) << "Clearing web entity source URL since" << value << "cannot be parsed to a valid URL."; }