From bbb353b113277760790fe82a6b2c065c0ab51dec Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 7 Mar 2016 15:29:44 +0100 Subject: [PATCH] qmake: fix UB in QMakeParser::putHashStr() Found by UBSan: qmake/library/qmakeparser.cpp:278:33: runtime error: null pointer passed as argument 2, which is declared to never be null Guard the call. Change-Id: I99341ab439a511f366dae9344ddcc8727c33b9b6 Reviewed-by: Oswald Buddenhagen (cherry picked from qtbase/1fd0d57ce3da83631423d17faadf97133f5c7835) Reviewed-by: Marc Mutz Reviewed-by: Jake Petroules --- src/shared/proparser/qmakeparser.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/shared/proparser/qmakeparser.cpp b/src/shared/proparser/qmakeparser.cpp index 59dc289548c..f22d47450ac 100644 --- a/src/shared/proparser/qmakeparser.cpp +++ b/src/shared/proparser/qmakeparser.cpp @@ -272,7 +272,8 @@ void QMakeParser::putHashStr(ushort *&pTokPtr, const ushort *buf, uint len) *tokPtr++ = (ushort)hash; *tokPtr++ = (ushort)(hash >> 16); *tokPtr++ = (ushort)len; - memcpy(tokPtr, buf, len * 2); + if (len) // buf may be nullptr; don't pass that to memcpy (-> undefined behavior) + memcpy(tokPtr, buf, len * 2); pTokPtr = tokPtr + len; }