Print this page
4229 mdb hangs on exit when long umem cache names exist
Reviewed by: Robert Mustacchi <rm@joyent.com>

@@ -21,24 +21,30 @@
  */
 /*
  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
+/*
+ * Copyright (c) 2013 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
+ */
 
 #ifndef _MDB_NV_H
 #define _MDB_NV_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include <sys/types.h>
 
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
 #ifdef _MDB
 
+/*
+ * There used to be a cap (MDB_NV_NAMELEN bytes including null) on the
+ * length of variable names stored in-line.  This cap is no longer there,
+ * however parts of mdb use the constant to sanitize input.
+ */
 #define MDB_NV_NAMELEN  31      /* Max variable name length including null */
 
 /*
  * These flags are stored inside each variable in v_flags:
  */

@@ -72,12 +78,12 @@
  * Each variable is defined by the following variable-length structure.
  * The debugger uses name/value collections to hash almost everything, so
  * we make a few simple space optimizations:
  *
  * A variable's name can be a pointer to external storage (v_ename and
- * MDB_NV_EXTNAME set), or it can be stored locally (MDB_NV_NAMELEN - 1
- * bytes of storage are allocated immediately after v_lname[0]).
+ * MDB_NV_EXTNAME set), or it can be stored locally (bytes of storage are
+ * allocated immediately after v_lname[0]).
  *
  * A variable may have multiple definitions (v_ndef chain), but this feature
  * is mutually exclusive with MDB_NV_EXTNAME in order to save space.
  */
 typedef struct mdb_var {