[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 06/28] target/arm: use the common interface for W
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PULL 06/28] target/arm: use the common interface for WRITE0/WRITEC in arm-semi |
Date: |
Thu, 30 May 2019 12:34:32 +0100 |
On Tue, 28 May 2019 at 10:49, Alex Bennée <address@hidden> wrote:
>
> Now we have a common semihosting console interface use that for our
> string output. However ARM is currently unique in also supporting
> semihosting for linux-user so we need to replicate the API in
> linux-user. If other architectures gain this support we can move the
> file later.
>
> Signed-off-by: Alex Bennée <address@hidden>
> Reviewed-by: Richard Henderson <address@hidden>
Hi; Coverity points out an issue in this function (CID 1401700):
> +int qemu_semihosting_console_out(CPUArchState *env, target_ulong addr, int
> len)
> +{
> + void *s = lock_user_string(addr);
> + len = write(STDERR_FILENO, s, len ? len : strlen(s));
> + unlock_user(s, addr, 0);
> + return len;
> +}
We call lock_user_string(), which can fail and return NULL
if the memory pointed to by addr isn't actually readable.
But we don't check for the error, so we can pass a NULL
pointer to write().
Also it looks a bit dodgy that we are passed in a
specific length value but we then go and look at the length
of the string, but we trust the specific length value over
the length of the string. If len is larger than the real
length of the string (including terminating NUL) then the
write() will read off the end of the string.
thanks
-- PMM
- [Qemu-devel] [PULL 07/28] target/arm: add LOG_UNIMP messages to arm-semi, (continued)
- [Qemu-devel] [PULL 07/28] target/arm: add LOG_UNIMP messages to arm-semi, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 01/28] semihosting: move semihosting configuration into its own directory, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 02/28] semihosting: introduce CONFIG_SEMIHOSTING, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 08/28] target/arm: correct return values for WRITE/READ in arm-semi, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 04/28] semihosting: enable chardev backed output for console, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 03/28] semihosting: implement a semihosting console, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 10/28] target/mips: convert UHI_plog to use common semihosting code, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 09/28] target/mips: only build mips-semi for softmmu, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 11/28] MAINTAINERS: update for semihostings new home, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 06/28] target/arm: use the common interface for WRITE0/WRITEC in arm-semi, Alex Bennée, 2019/05/28
- Re: [Qemu-devel] [PULL 06/28] target/arm: use the common interface for WRITE0/WRITEC in arm-semi,
Peter Maydell <=
- [Qemu-devel] [PULL 12/28] tests/docker: add ubuntu 18.04, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 24/28] Makefile: include per-target build directories in coverage report, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 14/28] tests/tcg/multiarch: add support for multiarch system tests, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 17/28] tests/tcg/aarch64: add system boot.S, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 13/28] tests/docker: Test more components on the Fedora default image, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 18/28] tests/tcg/multiarch: move the system memory test, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 16/28] editorconfig: add settings for .s/.S files, Alex Bennée, 2019/05/28
- [Qemu-devel] [PULL 22/28] .travis.yml: enable aarch64-softmmu and alpha-softmmu tcg tests, Alex Bennée, 2019/05/28