From b3848de6945d8514b6bea0909659310cbe38af61 Mon Sep 17 00:00:00 2001 From: Richard Weickelt Date: Tue, 24 Nov 2020 01:14:28 +0100 Subject: Fix crash when calling hasOwnProperty() on proxy object Property pointer p needs to be checked for nullptr value in QV4::ProxyObject::virtualGetOwnProperty(). This can happen when calling hasOwnProperty() or propertyIsEnumerable(). Fixes: QTBUG-88786 Change-Id: I43da58fed4d8656f9187213f7317f17398739e34 Reviewed-by: Ulf Hermann (cherry picked from commit 9b321a34490cd17c0eb043b69bd7c9d8d8f513d5) Reviewed-by: Qt Cherry-pick Bot --- src/qml/jsruntime/qv4proxy.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/qml') diff --git a/src/qml/jsruntime/qv4proxy.cpp b/src/qml/jsruntime/qv4proxy.cpp index 24676ffd00..1505eae426 100644 --- a/src/qml/jsruntime/qv4proxy.cpp +++ b/src/qml/jsruntime/qv4proxy.cpp @@ -265,9 +265,9 @@ PropertyAttributes ProxyObject::virtualGetOwnProperty(const Managed *m, Property ScopedProperty targetDesc(scope); PropertyAttributes targetAttributes = target->getOwnProperty(id, targetDesc); if (trapResult->isUndefined()) { - p->value = Encode::undefined(); - if (targetAttributes == Attr_Invalid) { + if (p) p->value = Encode::undefined(); + if (targetAttributes == Attr_Invalid) { return Attr_Invalid; } if (!targetAttributes.isConfigurable() || !target->isExtensible()) { @@ -295,8 +295,10 @@ PropertyAttributes ProxyObject::virtualGetOwnProperty(const Managed *m, Property } } - p->value = resultDesc->value; - p->set = resultDesc->set; + if (p) { + p->value = resultDesc->value; + p->set = resultDesc->set; + } return resultAttributes; } -- cgit v1.2.3