QmlJS: Fix crash

Fixes: QTCREATORBUG-24477
Change-Id: I45ab28fd11d8c9e51fb3b537a677620ecee5985b
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
This commit is contained in:
Christian Kandeler
2020-08-13 15:04:38 +02:00
parent bd6161e2b2
commit b19c5969d8

View File

@@ -198,12 +198,15 @@ protected:
} else { } else {
return false; return false;
} }
int argCount = 0;
for (const ExpressionListAST *list = ast->expression_list; list && list->value;
list = list->next) {
++argCount;
}
// must have at least four arguments // must have at least four arguments
if (!ast->expression_list if (argCount < 4)
|| !ast->expression_list->value || !ast->expression_list->next
|| !ast->expression_list->next->value || !ast->expression_list->next->next
|| !ast->expression_list->next->next->value || !ast->expression_list->next->next->next
|| !ast->expression_list->next->next->next->value)
return false; return false;
switch (registrationFunction) { switch (registrationFunction) {
case InvalidRegistrationFunction: case InvalidRegistrationFunction:
@@ -215,15 +218,11 @@ protected:
case QmlRegisterSingletonTypeCallback2: case QmlRegisterSingletonTypeCallback2:
case QmlRegisterSingletonTypeUrl: case QmlRegisterSingletonTypeUrl:
case QmlRegisterUncreatableType: case QmlRegisterUncreatableType:
if (!ast->expression_list->next->next->next->next if (argCount != 5)
|| !ast->expression_list->next->next->next->next->value
|| ast->expression_list->next->next->next->next->next)
return false; return false;
break; break;
case QmlRegisterUncreatableMetaObject: case QmlRegisterUncreatableMetaObject:
if (!ast->expression_list->next->next->next->next->next if (argCount != 6)
|| !ast->expression_list->next->next->next->next->next->value
|| ast->expression_list->next->next->next->next->next->next)
return false; return false;
} }
ExpressionAST *uriExp = nullptr; ExpressionAST *uriExp = nullptr;