[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 2/8] gdbstub: Try unlinking the unix socket before binding
From: |
Ilya Leoshkevich |
Subject: |
[PATCH v3 2/8] gdbstub: Try unlinking the unix socket before binding |
Date: |
Mon, 16 Dec 2024 13:33:20 +0100 |
In case an emulated process execve()s another emulated process, bind()
will fail, because the socket already exists. So try deleting it.
Note that it is not possible to handle this in do_execv(): deleting
gdbserver_user_state.socket_path before safe_execve() is not correct,
because the latter may fail, and afterwards we may lose control.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
gdbstub/user.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/gdbstub/user.c b/gdbstub/user.c
index ef52f249ce9..c900d0a52fe 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -337,6 +337,7 @@ static int gdbserver_open_socket(const char *path)
sockaddr.sun_family = AF_UNIX;
pstrcpy(sockaddr.sun_path, sizeof(sockaddr.sun_path) - 1, path);
+ unlink(sockaddr.sun_path);
ret = bind(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr));
if (ret < 0) {
perror("bind socket");
--
2.47.0
- [PATCH v3 0/8] gdbstub: Allow late attachment, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 2/8] gdbstub: Try unlinking the unix socket before binding,
Ilya Leoshkevich <=
- [PATCH v3 3/8] user: Introduce user/signal.h, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 7/8] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 1/8] gdbstub: Allow the %d placeholder in the socket path, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 8/8] tests/tcg: Add late gdbstub attach test, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 4/8] user: Introduce host_interrupt_signal, Ilya Leoshkevich, 2024/12/16
- [PATCH v3 5/8] osdep: Introduce qemu_kill_thread(), Ilya Leoshkevich, 2024/12/16
- [PATCH v3 6/8] gdbstub: Allow late attachment, Ilya Leoshkevich, 2024/12/16