diff options
author | Cody Peter Mello <cody.mello@joyent.com> | 2015-08-15 00:01:43 +0000 |
---|---|---|
committer | Cody Peter Mello <cody.mello@joyent.com> | 2015-08-16 06:13:05 +0000 |
commit | 9108c5e07330cfd63586277125b19ee25d543d94 (patch) | |
tree | f6df92be61a176eae685abfd56cdfa687a4bb105 /usr/src | |
parent | 46835c1dcc9ab3eca8be681d7f43a9575f10d7e5 (diff) | |
download | illumos-joyent-9108c5e07330cfd63586277125b19ee25d543d94.tar.gz |
OS-4643: mdb ::list command parses arguments incorrectly
Reviewed by: Alex Wilson <alex.wilson@joyent.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/mdb/common/mdb/mdb_print.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/usr/src/cmd/mdb/common/mdb/mdb_print.c b/usr/src/cmd/mdb/common/mdb/mdb_print.c index 263b157f65..fe74265b68 100644 --- a/usr/src/cmd/mdb/common/mdb/mdb_print.c +++ b/usr/src/cmd/mdb/common/mdb/mdb_print.c @@ -728,13 +728,6 @@ cmd_list(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) char buf[MDB_SYM_NAMLEN]; int ret; - /* - * Check that we were provided 2 arguments: a type name - * and a member of that type. - */ - if (argc != 2) - return (DCMD_USAGE); - ret = args_to_typename(&argc, &argv, buf, sizeof (buf)); if (ret != 0) return (ret); @@ -742,6 +735,14 @@ cmd_list(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) argv++; argc--; + /* + * If we make it here, we were provided a type name. We should + * only continue if we still have arguments left (e.g. member + * name and potentially a variable name). + */ + if (argc == 0) + return (DCMD_USAGE); + member = argv->a_un.a_str; offset = mdb_ctf_offsetof_by_name(buf, member); if (offset == -1) |