QRawFont: fix UB (misaligned load) in fontTable()

Found by UBSan:

  qrawfont.cpp:618:60: runtime error: load of misaligned address 0x2acee92a5569 for type 'const quint32', which requires 4 byte alignment

Fix by using MAKE_TAG(), like everywhere else, instead
of a load through a type-punned and misaligned pointer.

Change-Id: I52b88ca05a57f7d8c5e5bce953384de49514079b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
This commit is contained in:
Marc Mutz 2016-03-10 09:53:36 +01:00
parent add95c5510
commit 9739cae4c8

View File

@ -607,8 +607,7 @@ QByteArray QRawFont::fontTable(const char *tagName) const
if (!d->isValid()) if (!d->isValid())
return QByteArray(); return QByteArray();
const quint32 *tagId = reinterpret_cast<const quint32 *>(tagName); return d->fontEngine->getSfntTable(MAKE_TAG(tagName[0], tagName[1], tagName[2], tagName[3]));
return d->fontEngine->getSfntTable(qToBigEndian(*tagId));
} }
/*! /*!