summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Ross <gwr@nexenta.com>2016-04-05 14:54:33 -0400
committerGordon Ross <gwr@nexenta.com>2019-05-18 19:46:22 -0400
commit460505369f30f9bc79709c517401bf7ff6d97651 (patch)
tree34157a5fc8c8a064b6b84add4582deb29d736f77
parentbd49ed4555a9b0a9c4989b5985c9fba26da21457 (diff)
downloadillumos-joyent-460505369f30f9bc79709c517401bf7ff6d97651.tar.gz
10964 mdb smbsrv SEGV with IPv6 clients
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com> Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com> Reviewed by: Rick McNeal <rick.mcneal@nexenta.com> Approved by: Joshua M. Clulow <josh@sysmgr.org>
-rw-r--r--usr/src/cmd/mdb/common/modules/smbsrv/smbsrv.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/usr/src/cmd/mdb/common/modules/smbsrv/smbsrv.c b/usr/src/cmd/mdb/common/modules/smbsrv/smbsrv.c
index d074a71134..9a7f33131c 100644
--- a/usr/src/cmd/mdb/common/modules/smbsrv/smbsrv.c
+++ b/usr/src/cmd/mdb/common/modules/smbsrv/smbsrv.c
@@ -855,8 +855,6 @@ smbsess_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
"smb_session_state_t", se->s_state,
"SMB_SESSION_STATE_");
- if (se->ipaddr.a_family == AF_INET)
- ipaddrstrlen = INET_ADDRSTRLEN;
smb_inaddr_ntop(&se->ipaddr, cipaddr, ipaddrstrlen);
smb_inaddr_ntop(&se->local_ipaddr, lipaddr, ipaddrstrlen);
@@ -881,14 +879,20 @@ smbsess_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
mdb_printf("Number of active Transact.: %u\n\n",
se->s_xa_list.ll_count);
} else {
+ /*
+ * Use a reasonable mininum field width for the
+ * IP addr so the summary (usually) won't wrap.
+ */
+ int ipwidth = 22;
+
if (DCMD_HDRSPEC(flags)) {
mdb_printf(
"%<b>%<u>%-?s %-*s %-8s %-8s %-12s%</u>%</b>\n",
- "SESSION", ipaddrstrlen, "IP_ADDR",
+ "SESSION", ipwidth, "IP_ADDR",
"PORT", "DIALECT", "STATE");
}
mdb_printf("%-?p %-*s %-8d %-8#x %s\n",
- addr, ipaddrstrlen, cipaddr,
+ addr, ipwidth, cipaddr,
se->s_remote_port, se->dialect, state);
}
}
@@ -3232,7 +3236,7 @@ smb_inaddr_ntop(smb_inaddr_t *ina, char *buf, size_t sz)
(void) mdb_snprintf(buf, sz, "%I", ina->a_ipv4);
break;
case AF_INET6:
- (void) mdb_snprintf(buf, sz, "%N", ina->a_ipv6);
+ (void) mdb_snprintf(buf, sz, "%N", &ina->a_ipv6);
break;
default:
(void) mdb_snprintf(buf, sz, "(?)");