diff options
| author | Gordon Ross <gwr@nexenta.com> | 2016-04-05 14:54:33 -0400 |
|---|---|---|
| committer | Gordon Ross <gwr@nexenta.com> | 2019-05-18 19:46:22 -0400 |
| commit | 460505369f30f9bc79709c517401bf7ff6d97651 (patch) | |
| tree | 34157a5fc8c8a064b6b84add4582deb29d736f77 | |
| parent | bd49ed4555a9b0a9c4989b5985c9fba26da21457 (diff) | |
| download | illumos-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.c | 14 |
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, "(?)"); |
