make sure ELF, a.out, COFF, MZ/PE and gzip binaries aren't executed via sh
should save us some error messages
This commit is contained in:
parent
1b16db54f1
commit
f280b66d0a
16
exec.c
16
exec.c
@ -2,7 +2,7 @@
|
||||
|
||||
#include "sh.h"
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.32 2007/06/06 23:28:14 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.33 2007/06/15 21:22:40 tg Exp $");
|
||||
|
||||
static int comexec(struct op *, struct tbl *volatile, const char **,
|
||||
int volatile);
|
||||
@ -737,8 +737,20 @@ scriptexec(struct op *tp, const char **ap)
|
||||
if (*cp)
|
||||
*tp->args-- = (char *)cp;
|
||||
}
|
||||
}
|
||||
noshebang:
|
||||
fd = buf[0] << 8 | buf[1];
|
||||
if ((fd == /* OMAGIC */ 0407) ||
|
||||
(fd == /* NMAGIC */ 0410) ||
|
||||
(fd == /* ZMAGIC */ 0413) ||
|
||||
(fd == /* QMAGIC */ 0314) ||
|
||||
(fd == /* ECOFF_I386 */ 0x4C01) ||
|
||||
(fd == /* ECOFF_M68K */ 0x0150 || fd == 0x5001) ||
|
||||
(fd == /* ECOFF_SH */ 0x0500 || fd == 0x0005) ||
|
||||
(fd == 0x7F45 && buf[2] == 'L' && buf[3] == 'F') ||
|
||||
(fd == /* “MZ” */ 0x4D5A) ||
|
||||
(fd == /* gzip */ 0x1F8B))
|
||||
errorf("%s: not executable: magic %04X", tp->str, fd);
|
||||
}
|
||||
#endif
|
||||
args.ro = tp->args;
|
||||
*args.ro = sh;
|
||||
|
Loading…
Reference in New Issue
Block a user