Print this page
patch mdb_var_alloc

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/mdb/common/mdb/mdb_nv.c
          +++ new/usr/src/cmd/mdb/common/mdb/mdb_nv.c
↓ open down ↓ 30 lines elided ↑ open up ↑
  31   31  #include <mdb/mdb_modapi.h>
  32   32  #include <mdb/mdb_err.h>
  33   33  #include <mdb/mdb_nv.h>
  34   34  #include <mdb/mdb.h>
  35   35  
  36   36  #define NV_NAME(v) \
  37   37          (((v)->v_flags & MDB_NV_EXTNAME) ? (v)->v_ename : (v)->v_lname)
  38   38  
  39   39  #define NV_SIZE(v) \
  40   40          (((v)->v_flags & MDB_NV_EXTNAME) ? sizeof (mdb_var_t) : \
  41      -        sizeof (mdb_var_t) + MDB_NV_NAMELEN - 1)
       41 +        sizeof (mdb_var_t) + strlen((v)->v_lname))
  42   42  
  43   43  #define NV_HASHSZ       211
  44   44  
  45   45  static size_t
  46   46  nv_hashstring(const char *key)
  47   47  {
  48   48          size_t g, h = 0;
  49   49          const char *p;
  50   50  
  51   51          ASSERT(key != NULL);
↓ open down ↓ 7 lines elided ↑ open up ↑
  59   59                  }
  60   60          }
  61   61  
  62   62          return (h);
  63   63  }
  64   64  
  65   65  static mdb_var_t *
  66   66  nv_var_alloc(const char *name, const mdb_nv_disc_t *disc,
  67   67          uintmax_t value, uint_t flags, uint_t um_flags, mdb_var_t *next)
  68   68  {
  69      -        size_t nbytes = (flags & MDB_NV_EXTNAME) ? sizeof (mdb_var_t) :
  70      -            (sizeof (mdb_var_t) + MDB_NV_NAMELEN - 1);
       69 +        size_t nbytes;
       70 +        mdb_var_t *v;
       71 +
       72 +        if (flags & MDB_NV_EXTNAME)
       73 +                nbytes = sizeof (mdb_var_t);
       74 +        else
       75 +                nbytes = sizeof (mdb_var_t) + strlen(name);
  71   76  
  72      -        mdb_var_t *v = mdb_alloc(nbytes, um_flags);
       77 +        v = mdb_alloc(nbytes, um_flags);
  73   78  
  74   79          if (v == NULL)
  75   80                  return (NULL);
  76   81  
  77   82          if (flags & MDB_NV_EXTNAME) {
  78   83                  v->v_ename = name;
  79      -                v->v_lname[0] = 0;
       84 +                v->v_lname[0] = '\0';
  80   85          } else {
  81      -                (void) strncpy(v->v_lname, name, MDB_NV_NAMELEN - 1);
  82      -                v->v_lname[MDB_NV_NAMELEN - 1] = '\0';
       86 +                strcpy(v->v_lname, name);
  83   87                  v->v_ename = NULL;
  84   88          }
  85   89  
  86   90          v->v_uvalue = value;
  87   91          v->v_flags = flags & ~(MDB_NV_SILENT | MDB_NV_INTERPOS);
  88   92          v->v_disc = disc;
  89   93          v->v_next = next;
  90   94  
  91   95          return (v);
  92   96  }
↓ open down ↓ 394 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX