From 0f0234a5d0dbb088941c3ee2568a8b0a84d4de33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 6 Apr 2006 06:16:20 +0000 Subject: [PATCH] We no longer return B_OK in test_executable() for executables that don't define an entry point (like shared libraries). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17022 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/runtime_loader/runtime_loader.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/system/runtime_loader/runtime_loader.c b/src/system/runtime_loader/runtime_loader.c index 1ccb40c38f..8ee3b3f9bc 100644 --- a/src/system/runtime_loader/runtime_loader.c +++ b/src/system/runtime_loader/runtime_loader.c @@ -9,6 +9,7 @@ #include "runtime_loader_private.h" +#include #include #include @@ -267,8 +268,14 @@ test_executable(const char *name, uid_t user, gid_t group, char *invoker) status = B_OK; } - } else if (status == B_OK && invoker) - invoker[0] = '\0'; + } else if (status == B_OK) { + struct Elf32_Ehdr *elfHeader = (struct Elf32_Ehdr *)buffer; + if (elfHeader->e_entry == NULL) { + // we don't like to open shared libraries + status = B_NOT_AN_EXECUTABLE; + } else if (invoker) + invoker[0] = '\0'; + } out: _kern_close(fd);