[haiku-commits] haiku: hrev53712 - src/system/runtime_loader

  • From: Jérôme Duval <jerome.duval@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 12 Jan 2020 08:59:43 -0500 (EST)

hrev53712 adds 1 changeset to branch 'master'
old head: cf4ffd85fd87306371579c815927dfac28e77adb
new head: 3d7fbc1a0b5e11f729a171b6ac71336b28f78ae4
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=3d7fbc1a0b5e+%5Ecf4ffd85fd87

----------------------------------------------------------------------------

3d7fbc1a0b5e: runtime_loader: allow loading executables without section table
  
  Change-Id: I4bfee1d1aa40730586123a70fb480ee91787c15d
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2089
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

                                              [ X512 <danger_mail@xxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev53712
Commit:      3d7fbc1a0b5e11f729a171b6ac71336b28f78ae4
URL:         https://git.haiku-os.org/haiku/commit/?id=3d7fbc1a0b5e
Author:      X512 <danger_mail@xxxxxxx>
Date:        Wed Jan  8 16:55:49 2020 UTC
Committer:   Jérôme Duval <jerome.duval@xxxxxxxxx>
Commit-Date: Sun Jan 12 13:59:40 2020 UTC

----------------------------------------------------------------------------

2 files changed, 6 insertions(+), 3 deletions(-)
src/system/runtime_loader/elf_haiku_version.cpp | 3 +++
src/system/runtime_loader/elf_load_image.cpp    | 6 +++---

----------------------------------------------------------------------------

diff --git a/src/system/runtime_loader/elf_haiku_version.cpp 
b/src/system/runtime_loader/elf_haiku_version.cpp
index 60a6c37358..97fbed4073 100644
--- a/src/system/runtime_loader/elf_haiku_version.cpp
+++ b/src/system/runtime_loader/elf_haiku_version.cpp
@@ -23,6 +23,9 @@ static bool
 analyze_object_gcc_version(int fd, image_t* image, elf_ehdr& eheader,
        int32 sheaderSize, char* buffer, size_t bufferSize)
 {
+       if (sheaderSize <= 0)
+               return false;
+
        if (sheaderSize > (int)bufferSize) {
                FATAL("%s: Cannot handle section headers bigger than %lu 
bytes\n",
                        image->path, bufferSize);
diff --git a/src/system/runtime_loader/elf_load_image.cpp 
b/src/system/runtime_loader/elf_load_image.cpp
index 2e90e15ef2..9a72d6b0b0 100644
--- a/src/system/runtime_loader/elf_load_image.cpp
+++ b/src/system/runtime_loader/elf_load_image.cpp
@@ -416,7 +416,7 @@ parse_elf_header(elf_ehdr* eheader, int32* _pheaderSize,
        *_pheaderSize = eheader->e_phentsize * eheader->e_phnum;
        *_sheaderSize = eheader->e_shentsize * eheader->e_shnum;
 
-       if (*_pheaderSize <= 0 || *_sheaderSize <= 0)
+       if (*_pheaderSize <= 0)
                return B_NOT_AN_EXECUTABLE;
 
        return B_OK;
@@ -444,7 +444,7 @@ parse_elf32_header(Elf32_Ehdr* eheader, int32* _pheaderSize,
        *_pheaderSize = eheader->e_phentsize * eheader->e_phnum;
        *_sheaderSize = eheader->e_shentsize * eheader->e_shnum;
 
-       if (*_pheaderSize <= 0 || *_sheaderSize <= 0)
+       if (*_pheaderSize <= 0)
                return B_NOT_AN_EXECUTABLE;
 
        return B_OK;
@@ -469,7 +469,7 @@ parse_elf64_header(Elf64_Ehdr* eheader, int32* _pheaderSize,
        *_pheaderSize = eheader->e_phentsize * eheader->e_phnum;
        *_sheaderSize = eheader->e_shentsize * eheader->e_shnum;
 
-       if (*_pheaderSize <= 0 || *_sheaderSize <= 0)
+       if (*_pheaderSize <= 0)
                return B_NOT_AN_EXECUTABLE;
 
        return B_OK;


Other related posts:

  • » [haiku-commits] haiku: hrev53712 - src/system/runtime_loader - Jérôme Duval