Skip to content

Commit

Permalink
linux-user: Tidy loader_exec
Browse files Browse the repository at this point in the history
Reorg the if cases to reduce indentation.
Test for 4 bytes in the file before checking the signatures.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
rth7680 committed Oct 30, 2023
1 parent 7d2c552 commit f485be7
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions linux-user/linuxload.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,31 +154,31 @@ int loader_exec(int fdexec, const char *filename, char **argv, char **envp,

retval = prepare_binprm(bprm);

if (retval >= 0) {
if (bprm->buf[0] == 0x7f
&& bprm->buf[1] == 'E'
&& bprm->buf[2] == 'L'
&& bprm->buf[3] == 'F') {
retval = load_elf_binary(bprm, infop);
if (retval < 4) {
return -ENOEXEC;
}
if (bprm->buf[0] == 0x7f
&& bprm->buf[1] == 'E'
&& bprm->buf[2] == 'L'
&& bprm->buf[3] == 'F') {
retval = load_elf_binary(bprm, infop);
#if defined(TARGET_HAS_BFLT)
} else if (bprm->buf[0] == 'b'
&& bprm->buf[1] == 'F'
&& bprm->buf[2] == 'L'
&& bprm->buf[3] == 'T') {
retval = load_flt_binary(bprm, infop);
} else if (bprm->buf[0] == 'b'
&& bprm->buf[1] == 'F'
&& bprm->buf[2] == 'L'
&& bprm->buf[3] == 'T') {
retval = load_flt_binary(bprm, infop);
#endif
} else {
return -ENOEXEC;
}
} else {
return -ENOEXEC;
}

if (retval >= 0) {
/* success. Initialize important registers */
do_init_thread(regs, infop);
if (retval < 0) {
return retval;
}

return retval;
/* Success. Initialize important registers. */
do_init_thread(regs, infop);
return 0;
}

bool imgsrc_read(void *dst, off_t offset, size_t len,
Expand Down

0 comments on commit f485be7

Please sign in to comment.