From 00c1192ea2458be43c20247a71617c0eb45dcc99 Mon Sep 17 00:00:00 2001 From: Martin Bickel Date: Wed, 6 Jan 2021 17:23:59 +0100 Subject: [PATCH] Added testcase for offset/address mismatch detection --- tests/ELFIOTest1.cpp | 13 +++++++++++++ tests/elf_examples/mismatched_segments.elf | Bin 0 -> 4721 bytes 2 files changed, 13 insertions(+) create mode 100644 tests/elf_examples/mismatched_segments.elf diff --git a/tests/ELFIOTest1.cpp b/tests/ELFIOTest1.cpp index fd0a8a7..bf1505a 100644 --- a/tests/ELFIOTest1.cpp +++ b/tests/ELFIOTest1.cpp @@ -890,3 +890,16 @@ BOOST_AUTO_TEST_CASE( rearrange_local_symbols_with_reallocation ) BOOST_CHECK_EQUAL_COLLECTIONS( before.begin(), before.end(), after.begin(), after.end() ); } + +BOOST_AUTO_TEST_CASE( detect_mismatched_section_segment_tables ) +{ + /* This file is a hacked copy of hello_32 + * The error introduced is: + * Virtual address of segment 3 (0x804948c) conflicts + * with address of section .ctors (0x804948e) at offset 0x48e + */ + std::string in = "elf_examples/mismatched_segments.elf"; + elfio elf; + BOOST_REQUIRE_EQUAL( elf.load( in ), true ); + BOOST_REQUIRE( elf.validate().length() > 0); +} diff --git a/tests/elf_examples/mismatched_segments.elf b/tests/elf_examples/mismatched_segments.elf new file mode 100644 index 0000000000000000000000000000000000000000..0868665ac591a73fa2e668d9a6d90e2a14338893 GIT binary patch literal 4721 zcmd^DZEPGz8J;^|8n?KO?WQ5LmN=Z&?zd~1kr`>#@ds}YpazeDdJ+a=o3BS zGvW?ZQI|Xc4&+^wDXSncNE>7=jI2EwYp2``OregpDKeq0fSiGX!uFz5>0e;oS?D1D zLUjy{*e~@_WUoU1Ds+@Lfhp9ZT1p@IedwDKM;%4$_Fwn1fFDb`{iFHZ#H0Cae?C{N z)(p2~Y*ua2we)@0-UG5N{a~9rAuQ8A$0o-SmtD%bUp(>W1yrv{cCN`%s(B70s$^XGOW{xgb*? zkPB9>D0ZcXw-1?{jfCtc3jZVWAIC^x>dfWt=Ew#l62f^Y)_w>4sUcsD{1|f#`~-6> z`hnT&^_%U@cy9_q599_=hCg{+_-=KH0mE;Jo?$WUp+*7 z^@YffSmm!hMN*)Cwt0CK4Mgg1#10)^obw(MbFY1ld^IQM&w+bt!Rx-rIu!1_66j@5>f2d+_j_b$gLxYqkHir$?JdVD{wV`7Stk zv#05z-CRA6fzGCuRAFOk>C*9~Xyd>VCgI^t{_N$sU(=UHs}X+pdFqy=i$~t%skJBh>RE^cH8-UiH;z_U%A#gXB~Es+>af|(>Rl`A;mc6<{uyW zrQL{a#@a>Xj6(1#_4*1B`SwbEKM)7}6Jgao0Z^Op(kRNDUyM~6o81KW;vN4`CHW{1an-hs`iN_Mj zc;ASfjqkQRRo|aX;%xZ;U>ojq!LufW;d&L7JGzuBdUmBOjAF^Njlu21{hl=?jHzPP za4gpmMs~W0#wzzJN^{h%xVchs1u&tj*m?3*p`7=Gkt^o#>)AE@P69wx%37W!4BIg$ zD^|f4M#d{uTy&taZ)9KyMyx_EgAPh)h#x~*Q!OW4ursAX!7h4w7yS490Z_Q_xNqh6 z6o7kEC+e6Ugz!^Mp8W1X5l2}kem9slLH@}-jGXbaJK$+ObIO+>j3M$ER}Oejq0D$g zQF0hxLlDLmd5pu0P%{2>BA4k22xEvm#!nOl#;WdD)&q}27<0soyABlMD2Mw66jKoW z-DTW90v>})+ha~#4)GZ0N$?o|)N_2AH;poV@)fcH~Y1c`IUbPA$*JlDq2xJPQ#kM6e-@L)!G;CWE+tkOyIUPJ}$k#`!r z(@KEn(3Vc;F!(=efL!yKbIo*m8=G?gjx+uf5RQR+hI>A2 zZ#^mxh8k*npnWXy{9vWJ;j42(VP$~lfx@Z>#=XMqUB$P;7%YK?5rX?vVHHXG``i|su-tb_&)b5!KPaqj72HP(uVW_ni^AcPgY&&!uJa#)@kK?4 zynDz-_=$=4ea5`@H-eS^Jh1jR0`@jw?QaB;p91FoFQjH>)H_!l2AQ!k3Gh=@> z%hl?_Fd6?#NUAV z^q{@2XqWJT`LxMN`yFBpLX_)GeJAGk0pR%%j;jzB`n{NF;XekvQTrS15PO07W_mcV zKMKt69_@GY%bcE?Y9E@}&tYZ^}!QX;o`NUarh+wNRMW{iOEpklpMY8GJHj zYQ%1I`6EN}QYH;Kd{{_l%N3jVIn%0CtZDTIhG|~wf-1Y173Qw=zU_l)bKlOLqp2}- zY;b!z#j&kyESce^^7#!~r~}0bRRo+J2loy>IXonI8(j86KFc$1RoWEG)hnL%=ANVG zh&`2aapN7zTdr&4K|fhGooA7uA9UaHx*r($=y~7r=K#!lxc{tMG99a!&D*dd*HO>u xvS%C#l(@cX_c%iSSz$#tw!GzHCbn+dYE0RlS