[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 20/22] gdbstub: Handle errors in gdb_accept()
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PULL 20/22] gdbstub: Handle errors in gdb_accept() |
Date: |
Thu, 24 May 2018 23:35:02 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 20/05/2018 08:15, Michael Tokarev wrote:
> From: Peter Maydell <address@hidden>
>
> In gdb_accept(), we both fail to check all errors (notably
> that from socket_set_nodelay(), as Coverity notes in CID 1005666),
> and fail to return an error status back to our caller. Correct
> both of these things, so that errors in accept() result in our
> stopping with a useful error message rather than ignoring it.
>
> Signed-off-by: Peter Maydell <address@hidden>
> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> Reviewed-by: Thomas Huth <address@hidden>
> Signed-off-by: Michael Tokarev <address@hidden>
> ---
> gdbstub.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index b99980d2e2..e4ece2f5bc 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1814,7 +1814,7 @@ void gdb_signalled(CPUArchState *env, int sig)
> put_packet(s, buf);
> }
>
> -static void gdb_accept(void)
> +static bool gdb_accept(void)
> {
> GDBState *s;
> struct sockaddr_in sockaddr;
> @@ -1826,7 +1826,7 @@ static void gdb_accept(void)
> fd = accept(gdbserver_fd, (struct sockaddr *)&sockaddr, &len);
> if (fd < 0 && errno != EINTR) {
> perror("accept");
> - return;
> + return false;
> } else if (fd >= 0) {
> qemu_set_cloexec(fd);
> break;
> @@ -1834,7 +1834,10 @@ static void gdb_accept(void)
> }
>
> /* set short latency */
> - socket_set_nodelay(fd);
> + if (socket_set_nodelay(fd)) {
> + perror("setsockopt");
> + return false;
Coverity notes that this leaks fd.
Paolo
> + }
>
> s = g_malloc0(sizeof(GDBState));
> s->c_cpu = first_cpu;
> @@ -1843,6 +1846,7 @@ static void gdb_accept(void)
> gdb_has_xml = false;
>
> gdbserver_state = s;
> + return true;
> }
>
> static int gdbserver_open(int port)
> @@ -1883,7 +1887,11 @@ int gdbserver_start(int port)
> if (gdbserver_fd < 0)
> return -1;
> /* accept connections */
> - gdb_accept();
> + if (!gdb_accept()) {
> + close(gdbserver_fd);
> + gdbserver_fd = -1;
> + return -1;
> + }
> return 0;
> }
>
>
- [Qemu-devel] [PULL 00/22] Trivial patches for 2018-05-20, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 01/22] tcg: fix s/compliment/complement/ typos, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 04/22] qemu-option-trace: -trace enable= is a pattern, not a file, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 13/22] trivial: Do not include pci.h if it is not necessary, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 02/22] misc, ide: remove use of HWADDR_PRIx in trace events, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 03/22] slirp/debug: Print IP addresses in human readable form, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 06/22] qemu-img-commands.hx: argument ordering fixups, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 20/22] gdbstub: Handle errors in gdb_accept(), Michael Tokarev, 2018/05/20
- Re: [Qemu-devel] [PULL 20/22] gdbstub: Handle errors in gdb_accept(),
Paolo Bonzini <=
- [Qemu-devel] [PULL 08/22] qemu-img: remove references to GEN_DOCS, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 15/22] hw/timer/mt48t59: Fix bit-rotten NVRAM_PRINTF format strings, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 17/22] typedefs: Remove PcGuestInfo from qemu/typedefs.h, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 07/22] qemu-img.texi: fix command ordering, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 21/22] qapi/net.json: Fix the version number of the "vlan" removal, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 09/22] qemu-img: Make documentation between .texi and .hx consistent, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 16/22] qemu-options: Allow -no-user-config again, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 05/22] HACKING: document preference for g_new instead of g_malloc, Michael Tokarev, 2018/05/20
- [Qemu-devel] [PULL 22/22] acpi: fix a comment about aml_call0(), Michael Tokarev, 2018/05/20