4 #include <libelfu/libelfu.h>
7 int elfu_mCheck(ElfuElf *me)
13 sortedSecs = elfu_mScnSortedByOffset(me, &numSecs);
19 /* Check for overlapping sections */
20 for (i = 0; i < numSecs - 1; i++) {
21 if (sortedSecs[i]->shdr.sh_offset + SCNFILESIZE(&sortedSecs[i]->shdr)
22 > sortedSecs[i+1]->shdr.sh_offset) {
23 ELFU_WARN("elfu_check: Found overlapping sections: %s and %s.\n",
24 elfu_mScnName(me, sortedSecs[i]),
25 elfu_mScnName(me, sortedSecs[i+1]));
30 /* Check for sections overlapping with EHDR */
31 for (i = 0; i < numSecs; i++) {
32 if (sortedSecs[i]->shdr.sh_offset < me->ehdr.e_ehsize) {
33 ELFU_WARN("elfu_check: Found section overlapping with EHDR: %s.\n",
34 elfu_mScnName(me, sortedSecs[i]));
39 /* Check for sections overlapping with PHDRs */
40 for (i = 0; i < numSecs; i++) {
41 if (OVERLAPPING(sortedSecs[i]->shdr.sh_offset,
42 SCNFILESIZE(&sortedSecs[i]->shdr),
44 me->ehdr.e_phentsize * me->ehdr.e_phnum)) {
45 ELFU_WARN("elfu_check: Found section overlapping with PHDRs: %s.\n",
46 elfu_mScnName(me, sortedSecs[i]));