Fix up potential overflows in size calculations by replacing instances
[pspp] / src / vars-prs.c
index 37629604d83f8bceaeef7fe2d64455f06ac7fad7..920f8c9147ad2dee992b69588e929b90af399052 100644 (file)
@@ -91,41 +91,6 @@ parse_variable (void)
   return parse_dict_variable (default_dict);
 }
 
-/* Returns the dictionary class corresponding to a variable named
-   NAME. */
-enum dict_class
-dict_class_from_id (const char *name) 
-{
-  assert (name != NULL);
-
-  switch (name[0]) 
-    {
-    default:
-      return DC_ORDINARY;
-    case '$':
-      return DC_SYSTEM;
-    case '#':
-      return DC_SCRATCH;
-    }
-}
-
-/* Returns the name of dictionary class DICT_CLASS. */
-const char *
-dict_class_to_name (enum dict_class dict_class) 
-{
-  switch (dict_class) 
-    {
-    case DC_ORDINARY:
-      return _("ordinary");
-    case DC_SYSTEM:
-      return _("system");
-    case DC_SCRATCH:
-      return _("scratch");
-    default:
-      assert (0);
-      abort ();
-    }
-}
 
 /* Parses a set of variables from dictionary D given options
    OPTS.  Resulting list of variables stored in *VAR and the
@@ -199,7 +164,7 @@ add_variable (struct variable ***v, size_t *nv, size_t *mv,
       if (*nv >= *mv)
         {
           *mv = 2 * (*nv + 1);
-          *v = xrealloc (*v, *mv * sizeof **v);
+          *v = xnrealloc (*v, *mv, sizeof **v);
         }
 
       if ((pv_opts & PV_DUPLICATE) || !included[idx])
@@ -461,7 +426,7 @@ parse_DATA_LIST_vars (char ***names, size_t *nnames, int pv_opts)
          if (mvar < nvar + (n2 - n1 + 1))
            {
              mvar += ROUND_UP (n2 - n1 + 1, 16);
-             *names = xrealloc (*names, mvar * sizeof **names);
+             *names = xnrealloc (*names, mvar, sizeof **names);
            }
 
          for (n = n1; n <= n2; n++)
@@ -477,7 +442,7 @@ parse_DATA_LIST_vars (char ***names, size_t *nnames, int pv_opts)
          if (nvar >= mvar)
            {
              mvar += 16;
-             *names = xrealloc (*names, mvar * sizeof **names);
+             *names = xnrealloc (*names, mvar, sizeof **names);
            }
          (*names)[nvar++] = xstrdup (name1);
        }
@@ -530,7 +495,7 @@ parse_mixed_vars (char ***names, size_t *nnames, int pv_opts)
 
          if (!parse_variables (default_dict, &v, &nv, PV_NONE))
            goto fail;
-         *names = xrealloc (*names, (*nnames + nv) * sizeof **names);
+         *names = xnrealloc (*names, *nnames + nv, sizeof **names);
          for (i = 0; i < nv; i++)
            (*names)[*nnames + i] = xstrdup (v[i]->name);
          free (v);