summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-07-02 17:04:08 +0000
committerEric Andersen <andersen@codepoet.org>2003-07-02 17:04:08 +0000
commit08601aa5499c91be82693046a26d3a64ebce7350 (patch)
tree26cc4956b33637ad51706c62437acd52aa79f672
parent77bd7bc570049ec9bc50870ab771870f96f5d8f9 (diff)
Only exec child apps if they are elf type ET_EXEC
-rw-r--r--ldso/util/ldd.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ldso/util/ldd.c b/ldso/util/ldd.c
index b7a8dfe3a..9be97cce0 100644
--- a/ldso/util/ldd.c
+++ b/ldso/util/ldd.c
@@ -535,7 +535,8 @@ foo:
interp = find_elf_interpreter(ehdr);
#ifdef __LDSO_LDD_SUPPORT
- if (interp && ehdr->e_ident[EI_CLASS] == ELFCLASSM && ehdr->e_ident[EI_DATA] == ELFDATAM
+ if (interp && ehdr->e_type == ET_EXEC && ehdr->e_ident[EI_CLASS] == ELFCLASSM &&
+ ehdr->e_ident[EI_DATA] == ELFDATAM
&& ehdr->e_ident[EI_VERSION] == EV_CURRENT && MATCH_MACHINE(ehdr->e_machine))
{
struct stat statbuf;
@@ -558,7 +559,7 @@ foo:
/* Wait till it returns */
waitpid(pid, &status, 0);
- if (WIFEXITED(status)!=0xdead) {
+ if (WIFEXITED(status) && WEXITSTATUS(status)==0) {
return 1;
}