use reallocarray
authorespie <espie@openbsd.org>
Sun, 18 May 2014 08:10:00 +0000 (08:10 +0000)
committerespie <espie@openbsd.org>
Sun, 18 May 2014 08:10:00 +0000 (08:10 +0000)
okay chl@, tedu@

usr.bin/find/extern.h
usr.bin/find/function.c
usr.bin/find/main.c
usr.bin/find/misc.c

index 85efd1c..b1d90ab 100644 (file)
@@ -1,4 +1,4 @@
-/* *      $OpenBSD: extern.h,v 1.18 2012/12/05 23:20:25 deraadt Exp $*/
+/* *      $OpenBSD: extern.h,v 1.19 2014/05/18 08:10:00 espie Exp $*/
 /*-
  * Copyright (c) 1991, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -31,7 +31,8 @@
  */
 
 void    brace_subst(char *, char **, char *, int);
-void   *emalloc(unsigned int);
+void   *emalloc(size_t);
+void   *ereallocarray(void *, size_t, size_t);
 PLAN   *find_create(char ***);
 int     find_execute(PLAN *, char **);
 PLAN   *find_formplan(char **);
index de0ba09..cb9542e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: function.c,v 1.40 2013/04/20 04:52:24 deraadt Exp $   */
+/*     $OpenBSD: function.c,v 1.41 2014/05/18 08:10:00 espie Exp $     */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -537,8 +537,8 @@ c_exec(char *unused, char ***argvp, int isok)
 
                cnt = ap - *argvp - 1;                  /* units are words */
                new->ep_maxargs = 5000;
-               new->e_argv = (char **)emalloc((u_int)(cnt + new->ep_maxargs)
-                                               * sizeof(char **));
+               new->e_argv = ereallocarray(NULL,
+                   (size_t)(cnt + new->ep_maxargs), sizeof(char **));
 
                /* We start stuffing arguments after the user's last one. */
                new->ep_bxp = &new->e_argv[cnt];
@@ -566,9 +566,9 @@ c_exec(char *unused, char ***argvp, int isok)
                new->ep_rval = 0;
        } else { /* !F_PLUSSET */
                cnt = ap - *argvp + 1;
-               new->e_argv = (char **)emalloc((u_int)cnt * sizeof(char *));
-               new->e_orig = (char **)emalloc((u_int)cnt * sizeof(char *));
-               new->e_len = (int *)emalloc((u_int)cnt * sizeof(int));
+               new->e_argv = ereallocarray(NULL, cnt, sizeof(char *));
+               new->e_orig = ereallocarray(NULL, cnt, sizeof(char *));
+               new->e_len = ereallocarray(NULL, cnt, sizeof(int));
 
                for (argv = *argvp, cnt = 0; argv < ap; ++argv, ++cnt) {
                        new->e_orig[cnt] = *argv;
@@ -685,9 +685,9 @@ c_execdir(char *ignored, char ***argvp, int unused)
        }
 
        cnt = ap - *argvp + 1;
-       new->e_argv = (char **)emalloc((u_int)cnt * sizeof(char *));
-       new->e_orig = (char **)emalloc((u_int)cnt * sizeof(char *));
-       new->e_len = (int *)emalloc((u_int)cnt * sizeof(int));
+       new->e_argv = ereallocarray(NULL, cnt, sizeof(char *));
+       new->e_orig = ereallocarray(NULL, cnt, sizeof(char *));
+       new->e_len = ereallocarray(NULL, cnt, sizeof(int));
 
        for (argv = *argvp, cnt = 0; argv < ap; ++argv, ++cnt) {
                new->e_orig[cnt] = *argv;
index 2a0b28f..e40b345 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: main.c,v 1.29 2013/11/15 22:20:04 millert Exp $       */
+/*     $OpenBSD: main.c,v 1.30 2014/05/18 08:10:00 espie Exp $ */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -67,7 +67,7 @@ main(int argc, char *argv[])
 
        (void)time(&now);       /* initialize the time-of-day */
 
-       p = paths = (char **) emalloc(sizeof(char *) * argc);
+       p = paths = ereallocarray(NULL, argc, sizeof(char *));
 
        sigaction(SIGINFO, &sa, NULL);
 
@@ -121,7 +121,7 @@ main(int argc, char *argv[])
                usage();
        *p = NULL;
 
-       if (!(paths2 = realloc(paths, sizeof(char *) * (p - paths + 1))))
+       if (!(paths2 = reallocarray(paths, p - paths + 1, sizeof(char *))))
                err(1, NULL);
        paths = paths2;
 
index 95bec38..37e61a9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: misc.c,v 1.11 2009/10/27 23:59:38 deraadt Exp $       */
+/*     $OpenBSD: misc.c,v 1.12 2014/05/18 08:10:00 espie Exp $ */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -115,7 +115,7 @@ queryuser(char **argv)
  *     malloc with error checking.
  */
 void *
-emalloc(u_int len)
+emalloc(size_t len)
 {
        void *p;
 
@@ -124,6 +124,16 @@ emalloc(u_int len)
        err(1, NULL);
 }
 
+void *
+ereallocarray(void *oldp, size_t sz1, size_t sz2)
+{
+       void *p;
+
+       if ((p = reallocarray(oldp, sz1, sz2)) != NULL)
+               return (p);
+       err(1, NULL);
+}
+
 /*
  * show_path --
  *     called on SIGINFO