svn commit: r273274 - head/sys/netpfil/ipfw
Alexander V. Chernikov
melifaro at FreeBSD.org
Sun Oct 19 11:15:20 UTC 2014
Author: melifaro
Date: Sun Oct 19 11:15:19 2014
New Revision: 273274
URL: https://svnweb.freebsd.org/changeset/base/273274
Log:
Perform more checks on the number of tables supplied by user.
Modified:
head/sys/netpfil/ipfw/ip_fw_table.c
Modified: head/sys/netpfil/ipfw/ip_fw_table.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw_table.c Sun Oct 19 11:06:54 2014 (r273273)
+++ head/sys/netpfil/ipfw/ip_fw_table.c Sun Oct 19 11:15:19 2014 (r273274)
@@ -1489,6 +1489,21 @@ destroy_table(struct ip_fw_chain *ch, st
return (0);
}
+static uint32_t
+roundup2p(uint32_t v)
+{
+
+ v--;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ v++;
+
+ return (v);
+}
+
/*
* Grow tables index.
*
@@ -1505,8 +1520,12 @@ ipfw_resize_tables(struct ip_fw_chain *c
int i, new_blocks;
/* Check new value for validity */
+ if (ntables == 0)
+ return (EINVAL);
if (ntables > IPFW_TABLES_MAX)
ntables = IPFW_TABLES_MAX;
+ /* Alight to nearest power of 2 */
+ ntables = (unsigned int)roundup2p(ntables);
/* Allocate new pointers */
tablestate = malloc(ntables * sizeof(struct table_info),
More information about the svn-src-head
mailing list