summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qelfparser_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/plugin/qelfparser_p.cpp')
-rw-r--r--src/corelib/plugin/qelfparser_p.cpp7
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;