On Mon, 5 May 2014, Jean-Philippe Ouellet wrote: > On Sun, May 04, 2014 at 12:17:16PM -0600, Theo de Raadt wrote: > > We are going to completely ignore diffs which change multiple idioms > > at once. > > Okay. > > > That is how mistakes get made. > > Yep, more true than I realized.
FWIW I already have some of these in my tree - I'll try to pick up the ones that I do not. Comment inline. > Here's a simpler one: > > Index: apps.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/apps/apps.c,v > retrieving revision 1.45 > diff -u -p -r1.45 apps.c > --- apps.c 3 May 2014 16:03:54 -0000 1.45 > +++ apps.c 4 May 2014 19:35:59 -0000 > @@ -209,13 +209,10 @@ chopup_args(ARGS * arg, char *buf, int * > *argc = 0; > *argv = NULL; > > - i = 0; > if (arg->count == 0) { > arg->count = 20; > - arg->data = (char **)malloc(sizeof(char *) * arg->count); > + arg->data = calloc(arg->count, sizeof(char *)); > } > - for (i = 0; i < arg->count; i++) > - arg->data[i] = NULL; > > num = 0; > p = buf; This one is a change in behaviour - if arg->count is > 0 then previously we zeroed arg->data; now we do not. > @@ -232,8 +229,7 @@ chopup_args(ARGS * arg, char *buf, int * > if (num >= arg->count) { > char **tmp_p; > int tlen = arg->count + 20; > - tmp_p = (char **) realloc(arg->data, > - sizeof(char *) * tlen); > + tmp_p = reallocarray(arg->data, tlen, sizeof(char *)); > if (tmp_p == NULL) > return 0; > arg->data = tmp_p; > @@ -1836,9 +1832,9 @@ parse_name(char *subject, long chtype, i > * only become shorter */ > char *buf = malloc(buflen); > size_t max_ne = buflen / 2 + 1; /* maximum number of name elements */ > - char **ne_types = malloc(max_ne * sizeof(char *)); > - char **ne_values = malloc(max_ne * sizeof(char *)); > - int *mval = malloc(max_ne * sizeof(int)); > + char **ne_types = reallocarray(NULL, max_ne, sizeof(char *)); > + char **ne_values = reallocarray(NULL, max_ne, sizeof(char *)); > + int *mval = reallocarray(NULL, max_ne, sizeof(int)); > > char *sp = subject, *bp = buf; > int i, ne_num = 0; > Index: ca.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/apps/ca.c,v > retrieving revision 1.48 > diff -u -p -r1.48 ca.c > --- ca.c 2 May 2014 17:06:46 -0000 1.48 > +++ ca.c 4 May 2014 19:36:00 -0000 > @@ -2002,8 +2002,8 @@ again2: > row[DB_type][0] = 'V'; > row[DB_type][1] = '\0'; > > - if ((irow = (char **)malloc(sizeof(char *) * (DB_NUMBER + 1))) == > - NULL) { > + irow = reallocarray(NULL, DB_NUMBER + 1, sizeof(char *)); > + if (irow == NULL) { > BIO_printf(bio_err, "Memory allocation failure\n"); > goto err; > } > @@ -2267,8 +2267,8 @@ do_revoke(X509 * x509, CA_DB * db, int t > row[DB_type][0] = 'V'; > row[DB_type][1] = '\0'; > > - if ((irow = (char **)malloc(sizeof(char *) * > - (DB_NUMBER + 1))) == NULL) { > + irow = reallocarray(NULL, DB_NUMBER + 1, sizeof(char *)); > + if (irow == NULL) { > BIO_printf(bio_err, "Memory allocation failure\n"); > goto err; > } > Index: ecparam.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/apps/ecparam.c,v > retrieving revision 1.10 > diff -u -p -r1.10 ecparam.c > --- ecparam.c 24 Apr 2014 12:22:22 -0000 1.10 > +++ ecparam.c 4 May 2014 19:36:00 -0000 > @@ -312,7 +312,7 @@ bad: > > crv_len = EC_get_builtin_curves(NULL, 0); > > - curves = malloc((int) (sizeof(EC_builtin_curve) * crv_len)); > + curves = reallocarray(NULL, crv_len, sizeof(EC_builtin_curve)); > > if (curves == NULL) > goto end; > Index: speed.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/apps/speed.c,v > retrieving revision 1.38 > diff -u -p -r1.38 speed.c > --- speed.c 2 May 2014 17:06:46 -0000 1.38 > +++ speed.c 4 May 2014 19:36:00 -0000 > @@ -2178,7 +2178,7 @@ do_multi(int multi) > int *fds; > static char sep[] = ":"; > > - fds = malloc(multi * sizeof *fds); > + fds = reallocarray(NULL, multi, sizeof(int)); > for (n = 0; n < multi; ++n) { > if (pipe(fd) == -1) { > fprintf(stderr, "pipe failure\n"); > Index: srp.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/apps/srp.c,v > retrieving revision 1.10 > diff -u -p -r1.10 srp.c > --- srp.c 24 Apr 2014 12:22:22 -0000 1.10 > +++ srp.c 4 May 2014 19:36:00 -0000 > @@ -176,7 +176,8 @@ update_index(CA_DB * db, BIO * bio, char > char **irow; > int i; > > - if ((irow = (char **) malloc(sizeof(char *) * (DB_NUMBER + 1))) == NULL) > { + irow = reallocarray(NULL, DB_NUMBER + 1, sizeof(char *)); > + if (irow == NULL) > BIO_printf(bio_err, "Memory allocation failure\n"); > return 0; > } -- "Action without study is fatal. Study without action is futile." -- Mary Ritter Beard