diff options
author | 2003-02-04 17:29:06 +0000 | |
---|---|---|
committer | 2003-02-04 17:29:06 +0000 | |
commit | 523b390795b0847e674c845c34f58d7d8c12f551 (patch) | |
tree | 0e27840ce43b8173881244a722c4244271870d44 | |
parent | bind9ify (diff) | |
download | wireguard-openbsd-523b390795b0847e674c845c34f58d7d8c12f551.tar.xz wireguard-openbsd-523b390795b0847e674c845c34f58d7d8c12f551.zip |
use size_t for struct size and offset calculations.
check msize for overflow and realloc overflow.
-rw-r--r-- | sbin/pfctl/pfctl_table.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sbin/pfctl/pfctl_table.c b/sbin/pfctl/pfctl_table.c index 41d0a4008b7..199a6034ce4 100644 --- a/sbin/pfctl/pfctl_table.c +++ b/sbin/pfctl/pfctl_table.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pfctl_table.c,v 1.32 2003/02/04 12:10:02 cedric Exp $ */ +/* $OpenBSD: pfctl_table.c,v 1.33 2003/02/04 17:29:06 cedric Exp $ */ /* * Copyright (c) 2002 Cedric Berger @@ -56,7 +56,7 @@ extern void usage(void); static int pfctl_table(int, char *[], char *, char *, char *, int); -static void grow_buffer(int, int); +static void grow_buffer(size_t, int); static void print_table(struct pfr_table *, int); static void print_tstats(struct pfr_tstats *, int); static void load_addr(int, char *[], char *, int); @@ -310,7 +310,7 @@ pfctl_table(int argc, char *argv[], char *tname, char *command, } void -grow_buffer(int bs, int minsize) +grow_buffer(size_t bs, int minsize) { assert(minsize == 0 || minsize > msize); if (!msize) { @@ -326,6 +326,8 @@ grow_buffer(int bs, int minsize) msize *= 2; else msize = minsize; + if (msize < 0 || msize >= SIZE_T_MAX / bs) + err(1, "buffer overflow"); buffer.caddr = realloc(buffer.caddr, msize * bs); if (buffer.caddr == NULL) err(1, "realloc"); |