mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-02 12:20:51 +00:00
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 MFC after: 6 weeks
This commit is contained in:
parent
1f50ad62db
commit
3820c3aa3f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=315368
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -31,7 +31,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 (t == NULL) {
|
||||
|
@ -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;
|
||||
|
@ -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';
|
||||
|
@ -2194,7 +2194,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));
|
||||
l = (u_32_t)strtol(s, NULL, 0);
|
||||
switch (i & 3)
|
||||
{
|
||||
|
@ -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))
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user