QElfParser: double check section size before using it.

In rare cases, if the section is empty, we're reading the whole object
into memory because size -1 = UINT_MAX.

Change-Id: Ibf9a1534159ce626e4f2327536076d0cc1ebf0ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
Arvid E. Picciani 2012-05-15 12:29:53 +02:00 committed by Qt by Nokia
parent 7f3f3a0858
commit d5000e82e3

View File

@ -218,7 +218,7 @@ int QElfParser::parse(const char *dataStart, ulong fdlen, const QString &library
continue;
}
if (sh.offset == 0 || (sh.offset + sh.size) > fdlen) {
if (sh.offset == 0 || (sh.offset + sh.size) > fdlen || sh.size < 1) {
if (lib)
lib->errorString = QLibrary::tr("'%1' is an invalid ELF object (%2)").arg(library)
.arg(QLatin1String("missing section data. This is not a library."));