void tst_QPluginLoader::loadCorruptElf()
{
#if defined (__ELF__)
if (sizeof(void*) == 8) {
    QVERIFY(QFile::exists(SRCDIR "elftest/corrupt1.elf64.so"));

    QPluginLoader lib1(SRCDIR "elftest/corrupt1.elf64.so");
    QCOMPARE(lib1.load(), false);
    QVERIFY(lib1.errorString().contains("not a valid Qt plugin"));

    QPluginLoader lib2(SRCDIR "elftest/corrupt2.elf64.so");
    QCOMPARE(lib2.load(), false);
    QVERIFY(lib2.errorString().contains("not a valid Qt plugin"));

    QPluginLoader lib3(SRCDIR "elftest/corrupt3.elf64.so");
    QCOMPARE(lib3.load(), false);
    QVERIFY(lib3.errorString().contains("not a valid Qt plugin"));
} else if (sizeof(void*) == 4) {
    QPluginLoader libW(SRCDIR "elftest/corrupt3.elf64.so");
    QCOMPARE(libW.load(), false);
    QVERIFY(libW.errorString().contains("architecture"));
} else {
    QFAIL("Please port QElfParser to this platform or blacklist this test.");
}
#endif
}
Beispiel #2
0
void tst_QPluginLoader::loadCorruptElf()
{
#if defined (__ELF__)
    if (sizeof(void*) == 8) {
        QVERIFY(QFile::exists(QFINDTESTDATA("elftest/corrupt1.elf64.so")));

        QPluginLoader lib1(QFINDTESTDATA("elftest/corrupt1.elf64.so"));
        QCOMPARE(lib1.load(), false);
        QVERIFY2(lib1.errorString().contains("not an ELF object"), qPrintable(lib1.errorString()));

        QPluginLoader lib2(QFINDTESTDATA("elftest/corrupt2.elf64.so"));
        QCOMPARE(lib2.load(), false);
        QVERIFY2(lib2.errorString().contains("invalid"), qPrintable(lib2.errorString()));

        QPluginLoader lib3(QFINDTESTDATA("elftest/corrupt3.elf64.so"));
        QCOMPARE(lib3.load(), false);
        QVERIFY2(lib3.errorString().contains("invalid"), qPrintable(lib3.errorString()));
    } else if (sizeof(void*) == 4) {
        QPluginLoader libW(QFINDTESTDATA("elftest/corrupt3.elf64.so"));
        QCOMPARE(libW.load(), false);
        QVERIFY2(libW.errorString().contains("architecture"), qPrintable(libW.errorString()));
    } else {
        QFAIL("Please port QElfParser to this platform or blacklist this test.");
    }
#endif
}