Author: cy Date: Tue May 30 03:22:18 2017 New Revision: 319175 URL: https://svnweb.freebsd.org/changeset/base/319175
Log: MFC r315368: calloc() and realloc() modernization. This commit replaces calloc calls, which called calloc() as if it were malloc() by allocating a multiple of objects as a sizeof multiplied by the number of objects. The patch rectifies this by calling calloc() as it was meant to be called. This commit also replaces realloc() with reallocarray() in a similar fashion as above. Instead of calculating the memory to reallocated (changed) by multiplying sizeof by the number of objects, the sizeof and number are passed as separate arguments to reallocarray(), letting reallocarray() do the multiplication instead. Like the calloc() adjustment above, this is approach is cleaner and more elegant than than the previous code. This has been tested on my production firewall and a laptop (also running ipfilter). Submitted by: pfg Modified: stable/11/contrib/ipfilter/ip_fil.c stable/11/contrib/ipfilter/iplang/iplang_l.l stable/11/contrib/ipfilter/ipsd/ipsd.c stable/11/contrib/ipfilter/ipsd/ipsdr.c stable/11/contrib/ipfilter/ipsend/lsock.c stable/11/contrib/ipfilter/ipsend/sock.c stable/11/contrib/ipfilter/lib/parsefields.c stable/11/contrib/ipfilter/lib/parseipfexpr.c stable/11/contrib/ipfilter/radix_ipf.c stable/11/contrib/ipfilter/tools/ipf_y.y stable/11/contrib/ipfilter/tools/ipfcomp.c stable/11/contrib/ipfilter/tools/ipfstat.c Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/ipfilter/ip_fil.c ============================================================================== --- stable/11/contrib/ipfilter/ip_fil.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/ip_fil.c Tue May 30 03:22:18 2017 (r319175) @@ -317,8 +317,8 @@ get_unit(name, family) } else { old_ifneta = ifneta; nifs++; - ifneta = (struct ifnet **)realloc(ifneta, - (nifs + 1) * sizeof(ifp)); + ifneta = (struct ifnet **)reallocarray(ifneta, nifs + 1, + sizeof(ifp)); if (!ifneta) { free(old_ifneta); nifs = 0; Modified: stable/11/contrib/ipfilter/iplang/iplang_l.l ============================================================================== --- stable/11/contrib/ipfilter/iplang/iplang_l.l Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/iplang/iplang_l.l Tue May 30 03:22:18 2017 (r319175) @@ -195,7 +195,8 @@ void push_proto() if (!prstack) prstack = (int *)malloc(sizeof(int)); else - prstack = (int *)realloc((char *)prstack, numpr * sizeof(int)); + prstack = (int *)reallocarray((char *)prstack, numpr, + sizeof(int)); prstack[numpr - 1] = oldipproto; } Modified: stable/11/contrib/ipfilter/ipsd/ipsd.c ============================================================================== --- stable/11/contrib/ipfilter/ipsd/ipsd.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/ipsd/ipsd.c Tue May 30 03:22:18 2017 (r319175) @@ -129,7 +129,7 @@ int detect(ip, tcp) if (++ihp->sd_cnt == ihp->sd_sz) { ihp->sd_sz += 8; - sh = realloc(sh, ihp->sd_sz * sizeof(*sh)); + sh = reallocarray(sh, ihp->sd_sz, sizeof(*sh)); ihp->sd_hit = sh; } qsort(sh, ihp->sd_cnt, sizeof(*sh), ipcmp); Modified: stable/11/contrib/ipfilter/ipsd/ipsdr.c ============================================================================== --- stable/11/contrib/ipfilter/ipsd/ipsdr.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/ipsd/ipsdr.c Tue May 30 03:22:18 2017 (r319175) @@ -140,7 +140,7 @@ int detect(srcip, dport, date) if (++ihp->sd_cnt == ihp->sd_sz) { ihp->sd_sz += 8; - sh = realloc(sh, ihp->sd_sz * sizeof(*sh)); + sh = reallocarray(sh, ihp->sd_sz, sizeof(*sh)); ihp->sd_hit = sh; } qsort(sh, ihp->sd_cnt, sizeof(*sh), ipcmp); Modified: stable/11/contrib/ipfilter/ipsend/lsock.c ============================================================================== --- stable/11/contrib/ipfilter/ipsend/lsock.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/ipsend/lsock.c Tue May 30 03:22:18 2017 (r319175) @@ -163,7 +163,7 @@ struct sock *find_tcp(fd, ti) return NULL; fs = p->files; - o = (struct file **)calloc(1, sizeof(*o) * (fs->count + 1)); + o = (struct file **)calloc(fs->count + 1, sizeof(*o)); if (KMCPY(o, fs->fd, (fs->count + 1) * sizeof(*o)) == -1) { fprintf(stderr, "read(%#x,%#x,%d) - fd - failed\n", Modified: stable/11/contrib/ipfilter/ipsend/sock.c ============================================================================== --- stable/11/contrib/ipfilter/ipsend/sock.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/ipsend/sock.c Tue May 30 03:22:18 2017 (r319175) @@ -226,7 +226,7 @@ struct tcpcb *find_tcp(fd, ti) } #endif - o = (struct file **)calloc(1, sizeof(*o) * (up->u_lastfile + 1)); + o = (struct file **)calloc(up->u_lastfile + 1, sizeof(*o)); if (KMCPY(o, up->u_ofile, (up->u_lastfile + 1) * sizeof(*o)) == -1) { fprintf(stderr, "read(%#x,%#x,%d) - u_ofile - failed\n", @@ -330,7 +330,7 @@ struct tcpcb *find_tcp(tfd, ti) i = NULL; t = NULL; - o = (struct file **)calloc(1, sizeof(*o) * (fd->fd_lastfile + 1)); + o = (struct file **)calloc(fd->fd_lastfile + 1, sizeof(*o)); if (KMCPY(o, fd->fd_ofiles, (fd->fd_lastfile + 1) * sizeof(*o)) == -1) { fprintf(stderr, "read(%#lx,%#lx,%lu) - u_ofile - failed\n", Modified: stable/11/contrib/ipfilter/lib/parsefields.c ============================================================================== --- stable/11/contrib/ipfilter/lib/parsefields.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/lib/parsefields.c Tue May 30 03:22:18 2017 (r319175) @@ -32,7 +32,7 @@ wordtab_t *parsefields(table, arg) if (fields == NULL) { fields = malloc(2 * sizeof(*fields)); } else { - fields = realloc(fields, (num + 1) * sizeof(*fields)); + fields = reallocarray(fields, num + 1, sizeof(*fields)); if (fields == NULL) { warnx("memory allocation error at %d in %s in %s", __LINE__, __FUNCTION__, __FILE__); abort(); Modified: stable/11/contrib/ipfilter/lib/parseipfexpr.c ============================================================================== --- stable/11/contrib/ipfilter/lib/parseipfexpr.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/lib/parseipfexpr.c Tue May 30 03:22:18 2017 (r319175) @@ -123,9 +123,9 @@ parseipfexpr(line, errorptr) osize = asize; asize += 4 + (items * e->ipoe_nbasearg * e->ipoe_argsize); if (oplist == NULL) - oplist = calloc(1, sizeof(int) * (asize + 2)); + oplist = calloc(asize + 2, sizeof(int)); else - oplist = realloc(oplist, sizeof(int) * (asize + 2)); + oplist = reallocarray(oplist, asize + 2, sizeof(int)); if (oplist == NULL) { error = "oplist alloc failed"; goto parseerror; Modified: stable/11/contrib/ipfilter/radix_ipf.c ============================================================================== --- stable/11/contrib/ipfilter/radix_ipf.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/radix_ipf.c Tue May 30 03:22:18 2017 (r319175) @@ -1192,7 +1192,7 @@ buildtab(void) if (lines == 1) tab = malloc(sizeof(*tab) * 2); else - tab = realloc(tab, (lines + 1) * sizeof(*tab)); + tab = reallocarray(tab, lines + 1, sizeof(*tab)); tab[lines - 1].host = strdup(line); s = strchr(tab[lines - 1].host, '/'); *s++ = '\0'; Modified: stable/11/contrib/ipfilter/tools/ipf_y.y ============================================================================== --- stable/11/contrib/ipfilter/tools/ipf_y.y Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/tools/ipf_y.y Tue May 30 03:22:18 2017 (r319175) @@ -2195,7 +2195,7 @@ char *phrase; for (i = 0, s = strtok(phrase, " \r\n\t"); s != NULL; s = strtok(NULL, " \r\n\t"), i++) { - fb = realloc(fb, (i / 4 + 1) * sizeof(*fb)); + fb = reallocarray(fb, i / 4 + 1, sizeof(*fb)); if (fb == NULL) { warnx("memory allocation error at %d in %s in %s", __LINE__, __FUNCTION__, __FILE__); abort(); Modified: stable/11/contrib/ipfilter/tools/ipfcomp.c ============================================================================== --- stable/11/contrib/ipfilter/tools/ipfcomp.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/tools/ipfcomp.c Tue May 30 03:22:18 2017 (r319175) @@ -965,7 +965,7 @@ void printC(dir) frgroup_t *g; if (m == NULL) - m = (mc_t *)calloc(1, sizeof(*m) * FRC_MAX); + m = (mc_t *)calloc(FRC_MAX, sizeof(*m)); for (g = groups; g != NULL; g = g->fg_next) { if ((dir == 0) && ((g->fg_flags & FR_INQUE) != 0)) Modified: stable/11/contrib/ipfilter/tools/ipfstat.c ============================================================================== --- stable/11/contrib/ipfilter/tools/ipfstat.c Tue May 30 03:10:05 2017 (r319174) +++ stable/11/contrib/ipfilter/tools/ipfstat.c Tue May 30 03:22:18 2017 (r319175) @@ -1422,8 +1422,8 @@ static void topipstates(saddr, daddr, sport, dport, pr tsentry++; if (!maxtsentries || tsentry == maxtsentries) { maxtsentries += STGROWSIZE; - tstable = realloc(tstable, - maxtsentries * sizeof(statetop_t)); + tstable = reallocarray(tstable, maxtsentries, + sizeof(statetop_t)); if (tstable == NULL) { perror("realloc"); exit(-1); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"