diff options
author | Anton Kudryavtsev <anton.kudryavtsev@corp.mail.ru> | 2018-10-15 20:08:47 +0300 |
---|---|---|
committer | Anton Kudryavtsev <antkudr@mail.ru> | 2018-10-17 08:48:13 +0000 |
commit | aa633ff276e593af227d7c4a84db230382185490 (patch) | |
tree | 0ee14763cb229072d50e05f63c239f01d6b32a8a /src/corelib/kernel/qmetaobject.cpp | |
parent | 7bf4ebfb26e571a582fd4a19edec9aef1aef46cb (diff) |
QMetaEnum: fix UB
Check ptr before usage.
Change-Id: Iac757a2e260b237d837318932cc0b5896c6e04c2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index b647f69978..c642cd07f2 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2652,8 +2652,10 @@ int QMetaEnum::value(int index) const */ bool QMetaEnum::isFlag() const { + if (!mobj) + return false; const int offset = priv(mobj->d.data)->revision >= 8 ? 2 : 1; - return mobj && mobj->d.data[handle + offset] & EnumIsFlag; + return mobj->d.data[handle + offset] & EnumIsFlag; } /*! @@ -2664,8 +2666,10 @@ bool QMetaEnum::isFlag() const */ bool QMetaEnum::isScoped() const { + if (!mobj) + return false; const int offset = priv(mobj->d.data)->revision >= 8 ? 2 : 1; - return mobj && mobj->d.data[handle + offset] & EnumIsScoped; + return mobj->d.data[handle + offset] & EnumIsScoped; } /*! |