diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2021-09-25 10:19:06 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2021-10-04 21:51:50 -0700 |
commit | 2549a88ba2a48fa2bedce97dd71a2974c6f8840a (patch) | |
tree | 1d400ebbdad3562bd6bb7bd86ab48f2dc7dba666 /src/corelib/plugin/qelfparser_p.cpp | |
parent | b07345504c7a5537bb09b1d5763ca192eaeaf067 (diff) |
QPlugin: pass the direct header to qJsonFromRawLibraryMetaData()
This is done in preparation for storing the metadata without the magic
string in static plugins and in ELF notes.
Change-Id: I3eb1bd30e0124f89a052fffd16a820454dd56d3e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/plugin/qelfparser_p.cpp')
-rw-r--r-- | src/corelib/plugin/qelfparser_p.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp index c9b49c1570..0f30e8b20a 100644 --- a/src/corelib/plugin/qelfparser_p.cpp +++ b/src/corelib/plugin/qelfparser_p.cpp @@ -210,6 +210,13 @@ QLibraryScanResult QElfParser::parse(const char *dataStart, ulong fdlen, QString .arg(*errMsg, QLibrary::tr("missing section data. This is not a library.")); return {}; } + if (sh.size < sizeof(QPluginMetaData::MagicHeader)) { + *errMsg = QLibrary::tr("'%1' is an invalid ELF object (%2)") + .arg(*errMsg, QLibrary::tr("section .qtmetadata is too small")); + return {}; + } + sh.offset += sizeof(QPluginMetaData::MagicString); + sh.size -= sizeof(QPluginMetaData::MagicString); return { qsizetype(sh.offset), qsizetype(sh.size) }; } s += e_shentsize; |