summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcy <cy@FreeBSD.org>2017-05-30 03:22:18 +0000
committercy <cy@FreeBSD.org>2017-05-30 03:22:18 +0000
commit48dc5d2fdd681f68b9b33795aedd13b45ecb3499 (patch)
tree48eb964d063b7f6e6727407f394574f5697b1624
parent3c3043d37d9e754f134bc85975042ebb8078710d (diff)
downloadFreeBSD-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.c4
-rw-r--r--contrib/ipfilter/iplang/iplang_l.l3
-rw-r--r--contrib/ipfilter/ipsd/ipsd.c2
-rw-r--r--contrib/ipfilter/ipsd/ipsdr.c2
-rw-r--r--contrib/ipfilter/ipsend/lsock.c2
-rw-r--r--contrib/ipfilter/ipsend/sock.c4
-rw-r--r--contrib/ipfilter/lib/parsefields.c2
-rw-r--r--contrib/ipfilter/lib/parseipfexpr.c4
-rw-r--r--contrib/ipfilter/radix_ipf.c2
-rw-r--r--contrib/ipfilter/tools/ipf_y.y2
-rw-r--r--contrib/ipfilter/tools/ipfcomp.c2
-rw-r--r--contrib/ipfilter/tools/ipfstat.c4
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);
OpenPOWER on IntegriCloud