]> diplodocus.org Git - nmh/blobdiff - sbr/arglist.c
Fix invalid pointer arithmetic.
[nmh] / sbr / arglist.c
index e6f079e46c50fc90f84999c19c2661cf1cee897b..9425439adda3b0b3f3ff99797e8c083be0697840 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * arglist.c -- Routines for handling argument lists for execvp() and friends
+/* arglist.c -- Routines for handling argument lists for execvp() and friends
  *
  * This code is Copyright (c) 2013, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -52,7 +50,7 @@ argsplit(char *command, char **file, int *argp)
        }
     }
 
-    argvarray = (char **) mh_xmalloc((sizeof(char **) * (MAXARGS + 5)));
+    argvarray = mh_xmalloc(sizeof *argvarray * (MAXARGS + 5));
 
     /*
      * The simple case - no spaces or shell metacharacters
@@ -133,7 +131,7 @@ arglist_free(char *command, char **argvarray)
 {
     int i;
 
-    mh_xfree(command);
+    free(command);
 
     if (argvarray != NULL) {
        for (i = 0; argvarray[i] != NULL; i++)
@@ -201,8 +199,8 @@ argsplit_insert(struct msgs_array *msgs, char *command, char **program)
      */
 
     if (msgs->size + argp >= msgs->max) {
-       msgs->max += MAXMSGS > argp ? MAXMSGS : argp;
-       msgs->msgs = mh_xrealloc(msgs->msgs, msgs->max * sizeof(*msgs->msgs));
+        msgs->max += max(MAXMSGS, argp);
+        msgs->msgs = mh_xrealloc(msgs->msgs, msgs->max * sizeof(*msgs->msgs));
     }
 
     for (i = msgs->size - 1; i >= 0; i--)