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;