diff options
author | cy <cy@FreeBSD.org> | 2017-05-30 03:22:18 +0000 |
---|---|---|
committer | cy <cy@FreeBSD.org> | 2017-05-30 03:22:18 +0000 |
commit | 48dc5d2fdd681f68b9b33795aedd13b45ecb3499 (patch) | |
tree | 48eb964d063b7f6e6727407f394574f5697b1624 | |
parent | 3c3043d37d9e754f134bc85975042ebb8078710d (diff) | |
download | FreeBSD-src-48dc5d2fdd681f68b9b33795aedd13b45ecb3499.zip FreeBSD-src-48dc5d2fdd681f68b9b33795aedd13b45ecb3499.tar.gz |
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
-rw-r--r-- | contrib/ipfilter/ip_fil.c | 4 | ||||
-rw-r--r-- | contrib/ipfilter/iplang/iplang_l.l | 3 | ||||
-rw-r--r-- | contrib/ipfilter/ipsd/ipsd.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/ipsd/ipsdr.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/ipsend/lsock.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/ipsend/sock.c | 4 | ||||
-rw-r--r-- | contrib/ipfilter/lib/parsefields.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/lib/parseipfexpr.c | 4 | ||||
-rw-r--r-- | contrib/ipfilter/radix_ipf.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/tools/ipf_y.y | 2 | ||||
-rw-r--r-- | contrib/ipfilter/tools/ipfcomp.c | 2 | ||||
-rw-r--r-- | contrib/ipfilter/tools/ipfstat.c | 4 |
12 files changed, 17 insertions, 16 deletions
diff --git a/contrib/ipfilter/ip_fil.c b/contrib/ipfilter/ip_fil.c index 03e4093..f16c4fb 100644 --- a/contrib/ipfilter/ip_fil.c +++ b/contrib/ipfilter/ip_fil.c @@ -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; diff --git a/contrib/ipfilter/iplang/iplang_l.l b/contrib/ipfilter/iplang/iplang_l.l index 029a417..0002db1 100644 --- a/contrib/ipfilter/iplang/iplang_l.l +++ b/contrib/ipfilter/iplang/iplang_l.l @@ -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; } diff --git a/contrib/ipfilter/ipsd/ipsd.c b/contrib/ipfilter/ipsd/ipsd.c index ce51c1b..5269dab 100644 --- a/contrib/ipfilter/ipsd/ipsd.c +++ b/contrib/ipfilter/ipsd/ipsd.c @@ -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); diff --git a/contrib/ipfilter/ipsd/ipsdr.c b/contrib/ipfilter/ipsd/ipsdr.c index e1c0c0a..5adf076 100644 --- a/contrib/ipfilter/ipsd/ipsdr.c +++ b/contrib/ipfilter/ipsd/ipsdr.c @@ -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); diff --git a/contrib/ipfilter/ipsend/lsock.c b/contrib/ipfilter/ipsend/lsock.c index 5cf2bf7..245b292 100644 --- a/contrib/ipfilter/ipsend/lsock.c +++ b/contrib/ipfilter/ipsend/lsock.c @@ -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", diff --git a/contrib/ipfilter/ipsend/sock.c b/contrib/ipfilter/ipsend/sock.c index 6d0f3db..81e8ec3 100644 --- a/contrib/ipfilter/ipsend/sock.c +++ b/contrib/ipfilter/ipsend/sock.c @@ -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", diff --git a/contrib/ipfilter/lib/parsefields.c b/contrib/ipfilter/lib/parsefields.c index 9707159..93c3601 100644 --- a/contrib/ipfilter/lib/parsefields.c +++ b/contrib/ipfilter/lib/parsefields.c @@ -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(); diff --git a/contrib/ipfilter/lib/parseipfexpr.c b/contrib/ipfilter/lib/parseipfexpr.c index 9a2a207..1895830 100644 --- a/contrib/ipfilter/lib/parseipfexpr.c +++ b/contrib/ipfilter/lib/parseipfexpr.c @@ -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; diff --git a/contrib/ipfilter/radix_ipf.c b/contrib/ipfilter/radix_ipf.c index f145c38..1c9fa7c 100644 --- a/contrib/ipfilter/radix_ipf.c +++ b/contrib/ipfilter/radix_ipf.c @@ -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'; diff --git a/contrib/ipfilter/tools/ipf_y.y b/contrib/ipfilter/tools/ipf_y.y index 2ff9abd..26db2a2 100644 --- a/contrib/ipfilter/tools/ipf_y.y +++ b/contrib/ipfilter/tools/ipf_y.y @@ -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(); diff --git a/contrib/ipfilter/tools/ipfcomp.c b/contrib/ipfilter/tools/ipfcomp.c index eba28ce..d41faa4 100644 --- a/contrib/ipfilter/tools/ipfcomp.c +++ b/contrib/ipfilter/tools/ipfcomp.c @@ -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)) diff --git a/contrib/ipfilter/tools/ipfstat.c b/contrib/ipfilter/tools/ipfstat.c index 3261cef..3f00601 100644 --- a/contrib/ipfilter/tools/ipfstat.c +++ b/contrib/ipfilter/tools/ipfstat.c @@ -1422,8 +1422,8 @@ static void topipstates(saddr, daddr, sport, dport, protocol, ver, 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); |