changeset 13735:1c48a05ba37d

2602 mdb ::sockparams SEGV Reviewed by: Gordon Ross <gordon.w.ross@gmail.com> Reviewed by: Milan Jurik <milan.jurik@xylab.cz> Approved by: Richard Lowe <richlowe@richlowe.net>
author Andrey Sokolov <keremet@solaris.kirov.ru>
date Wed, 20 Jun 2012 15:11:05 -0400
parents 41fe4dd8e23d
children 9f1d48e1681f
files usr/src/cmd/mdb/common/modules/sockfs/sockfs.c
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/mdb/common/modules/sockfs/sockfs.c	Tue Jun 19 13:33:18 2012 -0400
+++ b/usr/src/cmd/mdb/common/modules/sockfs/sockfs.c	Wed Jun 20 15:11:05 2012 -0400
@@ -66,6 +66,8 @@
 sockparams_prt(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
 {
 	struct sockparams sp;
+	char strdev[MAXPATHLEN];
+	char sockmod[MODMAXNAMELEN];
 
 	if ((flags & DCMD_ADDRSPEC) == 0) {
 		uint_t opt_e = 0;
@@ -112,12 +114,18 @@
 		return (DCMD_ERR);
 	}
 
+	if ((sp.sp_sdev_info.sd_devpath == NULL) ||
+	    (mdb_readstr(strdev, sizeof (strdev),
+	    (uintptr_t)sp.sp_sdev_info.sd_devpath) <= 0))
+		strcpy(strdev, "-");
+	if (mdb_readstr(sockmod, sizeof (sockmod),
+	    (uintptr_t)sp.sp_smod_name) <= 0)
+		strcpy(sockmod, "");
+
 	mdb_printf("%0?p %3u %3u %3u %15s %15s %6u %#6x\n",
 	    addr,
 	    sp.sp_family, sp.sp_type, sp.sp_protocol,
-	    (sp.sp_sdev_info.sd_devpath != 0) ?
-	    sp.sp_sdev_info.sd_devpath : "-",
-	    sp.sp_smod_name, sp.sp_refcnt,
+	    strdev, sockmod, sp.sp_refcnt,
 	    sp.sp_flags);