From: Łukasz Stelmach <l.stelmach@samsung.com>
IP protocols should not be printed unless the socket is an IPv4 or
IPv6 one. Current arrangement erroneously prints IPPROTO_IP for Unix
domain sockets.
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250827095412.2348821-1-l.stelmach@samsung.com>
---
linux-user/strace.c | 36 ++++++++++++++++++++----------------
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 3b744ccd4a..786354627a 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -586,23 +586,27 @@ print_socket_protocol(int domain, int type, int protocol)
return;
}
- switch (protocol) {
- case IPPROTO_IP:
- qemu_log("IPPROTO_IP");
- break;
- case IPPROTO_TCP:
- qemu_log("IPPROTO_TCP");
- break;
- case IPPROTO_UDP:
- qemu_log("IPPROTO_UDP");
- break;
- case IPPROTO_RAW:
- qemu_log("IPPROTO_RAW");
- break;
- default:
- qemu_log("%d", protocol);
- break;
+ if (domain == AF_INET || domain == AF_INET6) {
+ switch (protocol) {
+ case IPPROTO_IP:
+ qemu_log("IPPROTO_IP");
+ break;
+ case IPPROTO_TCP:
+ qemu_log("IPPROTO_TCP");
+ break;
+ case IPPROTO_UDP:
+ qemu_log("IPPROTO_UDP");
+ break;
+ case IPPROTO_RAW:
+ qemu_log("IPPROTO_RAW");
+ break;
+ default:
+ qemu_log("%d", protocol);
+ break;
+ }
+ return;
}
+ qemu_log("%d", protocol);
}
--
2.43.0