diff options
author | 2002-07-09 17:03:00 +0000 | |
---|---|---|
committer | 2002-07-09 17:03:00 +0000 | |
commit | 85a9a5940962fac3ab30b028a73dd2415d9c9d2c (patch) | |
tree | 51f3fdad8d390f9ee3888b1a74e3e21f72695c76 /lib/libpcap | |
parent | mandoc, and doc the upcoming -u option (diff) | |
download | wireguard-openbsd-85a9a5940962fac3ab30b028a73dd2415d9c9d2c.tar.xz wireguard-openbsd-85a9a5940962fac3ab30b028a73dd2415d9c9d2c.zip |
more error checking of memory allocation, from clodder@acm.org. okay deraadt@
Diffstat (limited to 'lib/libpcap')
-rw-r--r-- | lib/libpcap/gencode.c | 7 | ||||
-rw-r--r-- | lib/libpcap/optimize.c | 19 |
2 files changed, 22 insertions, 4 deletions
diff --git a/lib/libpcap/gencode.c b/lib/libpcap/gencode.c index 64a4ff264e6..79986577d81 100644 --- a/lib/libpcap/gencode.c +++ b/lib/libpcap/gencode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gencode.c,v 1.16 2002/03/23 01:33:16 frantzen Exp $ */ +/* $OpenBSD: gencode.c,v 1.17 2002/07/09 17:03:00 provos Exp $ */ /* * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 @@ -22,7 +22,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: /home/cvs/src/lib/libpcap/gencode.c,v 1.16 2002/03/23 01:33:16 frantzen Exp $ (LBL)"; + "@(#) $Header: /home/cvs/src/lib/libpcap/gencode.c,v 1.17 2002/07/09 17:03:00 provos Exp $ (LBL)"; #endif #include <sys/types.h> @@ -179,6 +179,9 @@ newchunk(n) bpf_error("out of memory"); size = CHUNK0SIZE << k; cp->m = (void *)malloc(size); + if (cp->m == NULL) + bpf_error("out of memory"); + memset((char *)cp->m, 0, size); cp->n_left = size; if (n > size) diff --git a/lib/libpcap/optimize.c b/lib/libpcap/optimize.c index 48947490170..356f65af653 100644 --- a/lib/libpcap/optimize.c +++ b/lib/libpcap/optimize.c @@ -1,4 +1,4 @@ -/* $OpenBSD: optimize.c,v 1.7 2000/04/26 21:25:53 jakob Exp $ */ +/* $OpenBSD: optimize.c,v 1.8 2002/07/09 17:03:00 provos Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994, 1995, 1996 @@ -24,7 +24,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: /home/cvs/src/lib/libpcap/optimize.c,v 1.7 2000/04/26 21:25:53 jakob Exp $ (LBL)"; + "@(#) $Header: /home/cvs/src/lib/libpcap/optimize.c,v 1.8 2002/07/09 17:03:00 provos Exp $ (LBL)"; #endif #include <sys/types.h> @@ -1811,17 +1811,24 @@ opt_init(root) unMarkAll(); n = count_blocks(root); blocks = (struct block **)malloc(n * sizeof(*blocks)); + if (blocks == NULL) + bpf_error("malloc"); + unMarkAll(); n_blocks = 0; number_blks_r(root); n_edges = 2 * n_blocks; edges = (struct edge **)malloc(n_edges * sizeof(*edges)); + if (edges == NULL) + bpf_error("malloc"); /* * The number of levels is bounded by the number of nodes. */ levels = (struct block **)malloc(n_blocks * sizeof(*levels)); + if (levels == NULL) + bpf_error("malloc"); edgewords = n_edges / (8 * sizeof(bpf_u_int32)) + 1; nodewords = n_blocks / (8 * sizeof(bpf_u_int32)) + 1; @@ -1829,6 +1836,9 @@ opt_init(root) /* XXX */ space = (bpf_u_int32 *)malloc(2 * n_blocks * nodewords * sizeof(*space) + n_edges * edgewords * sizeof(*space)); + if (space == NULL) + bpf_error("malloc"); + p = space; all_dom_sets = p; for (i = 0; i < n; ++i) { @@ -1866,6 +1876,8 @@ opt_init(root) maxval = 3 * max_stmts; vmap = (struct vmapinfo *)malloc(maxval * sizeof(*vmap)); vnode_base = (struct valnode *)malloc(maxval * sizeof(*vmap)); + if (vmap == NULL || vnode_base == NULL) + bpf_error("malloc"); } /* @@ -2062,6 +2074,9 @@ icode_to_fcode(root, lenp) n = *lenp = count_stmts(root); fp = (struct bpf_insn *)malloc(sizeof(*fp) * n); + if (fp == NULL) + bpf_error("malloc"); + memset((char *)fp, 0, sizeof(*fp) * n); fstart = fp; ftail = fp + n; |