From b140d12fca7228e6234c2acd7d3c1a17d0cb850f Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Fri, 28 May 2021 10:27:24 +0200 Subject: QV4StackFrame: Fix ubsan warning Calling memcpy with a nullptr is UB, even if we copy 0 bytes. Add a null check to avoid the issue. Fixes: QTBUG-94067 Change-Id: I1d47424754e22f13d7b494ae984b4407b96b1805 Reviewed-by: Andrei Golubev (cherry picked from commit 0b10b83dad91b44559b9f4ddcf9d8bed5544de93) Reviewed-by: Fabian Kosmale --- src/qml/jsruntime/qv4stackframe_p.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/qml') diff --git a/src/qml/jsruntime/qv4stackframe_p.h b/src/qml/jsruntime/qv4stackframe_p.h index 616fa9a5a9..9b6b5322bd 100644 --- a/src/qml/jsruntime/qv4stackframe_p.h +++ b/src/qml/jsruntime/qv4stackframe_p.h @@ -134,7 +134,9 @@ struct Q_QML_EXPORT CppStackFrame { argc = nFormals; jsFrame->setArgc(argc); - memcpy(jsFrame->args, originalArguments, argc*sizeof(Value)); + // memcpy requires non-null ptr, even if argc*sizeof(Value) == 0 + if (originalArguments) + memcpy(jsFrame->args, originalArguments, argc*sizeof(Value)); Q_STATIC_ASSERT(Encode::undefined() == 0); memset(jsFrame->args + argc, 0, (nRegisters - argc)*sizeof(Value)); -- cgit v1.2.3