linux-user: Tidy loader_exec

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>
This commit is contained in:
Richard Henderson 2021-06-16 19:37:00 -07:00
parent 7d2c5526ed
commit f485be725d

View file

@ -154,7 +154,9 @@ int loader_exec(int fdexec, const char *filename, char **argv, char **envp,
retval = prepare_binprm(bprm); retval = prepare_binprm(bprm);
if (retval >= 0) { if (retval < 4) {
return -ENOEXEC;
}
if (bprm->buf[0] == 0x7f if (bprm->buf[0] == 0x7f
&& bprm->buf[1] == 'E' && bprm->buf[1] == 'E'
&& bprm->buf[2] == 'L' && bprm->buf[2] == 'L'
@ -170,15 +172,13 @@ int loader_exec(int fdexec, const char *filename, char **argv, char **envp,
} else { } else {
return -ENOEXEC; return -ENOEXEC;
} }
if (retval < 0) {
return retval;
} }
if (retval >= 0) { /* Success. Initialize important registers. */
/* success. Initialize important registers */
do_init_thread(regs, infop); do_init_thread(regs, infop);
return retval; return 0;
}
return retval;
} }
bool imgsrc_read(void *dst, off_t offset, size_t len, bool imgsrc_read(void *dst, off_t offset, size_t len,