strace/net-enhance-decoding-of-getsockopt-SO_ERROR.patch

61 lines
1.5 KiB
Diff
Raw Normal View History

2019-09-30 11:17:43 -04:00
From 692dbd2c3d2052025e3d4b121d94689f24458651 Mon Sep 17 00:00:00 2001
From: Masatake YAMATO <yamato@redhat.com>
Date: Tue, 18 Dec 2018 04:16:11 +0900
Subject: [PATCH 146/293] net: enhance decoding of getsockopt(SO_ERROR)
* net.c (print_get_error): New function decoding error
number returned as option value for SO_ERROR option.
(print_getsockopt) <case SO_ERROR>: Call print_get_error.
* tests/so_error.c: New test.
* tests/gen_tests.in (so_error): Likewise.
* tests/pure_executables.list: Add so_error.
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
---
net.c | 20 +++++++++
1 files changed, 20 insertions(+)
diff --git a/net.c b/net.c
index 3058e2d..bcab329 100644
--- a/net.c
+++ b/net.c
@@ -651,6 +651,23 @@ print_get_ucred(struct tcb *const tcp, const kernel_ulong_t addr,
tprints("}");
}
+static void
+print_get_error(struct tcb *const tcp, const kernel_ulong_t addr,
+ unsigned int len)
+{
+ unsigned int err;
+
+ if (len > sizeof(err))
+ err = sizeof(err);
+
+ if (umoven_or_printaddr(tcp, addr, len, &err))
+ return;
+
+ tprints("[");
+ print_xlat_ex(err, err_name(err), XLAT_STYLE_FMT_U);
+ tprints("]");
+}
+
#ifdef PACKET_STATISTICS
static void
print_tpacket_stats(struct tcb *const tcp, const kernel_ulong_t addr,
@@ -766,6 +783,9 @@ print_getsockopt(struct tcb *const tcp, const unsigned int level,
else
printaddr(addr);
return;
+ case SO_ERROR:
+ print_get_error(tcp, addr, rlen);
+ return;
}
break;
--
1.7.12.4