61 lines
1.5 KiB
Diff
61 lines
1.5 KiB
Diff
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
|
|
|