Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Oct 2014 18:22:05 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r272714 - projects/ipfw/sys/netpfil/ipfw
Message-ID:  <201410071822.s97IM5eO036330@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Tue Oct  7 18:22:05 2014
New Revision: 272714
URL: https://svnweb.freebsd.org/changeset/base/272714

Log:
  Fix possible crash when old value pointer is not updated after array resize.

Modified:
  projects/ipfw/sys/netpfil/ipfw/ip_fw_table_value.c

Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_value.c
==============================================================================
--- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_value.c	Tue Oct  7 18:00:34 2014	(r272713)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_value.c	Tue Oct  7 18:22:05 2014	(r272714)
@@ -555,8 +555,17 @@ ipfw_link_table_values(struct ip_fw_chai
 	/* Let's try to link values */
 	for (i = 0; i < count; i++) {
 		ptei = &tei[i];
-		if (ptei->value != 0)
+		if (ptei->value != 0) {
+
+			/*
+			 * We may be here after several process restarts,
+			 * so we need to update all fields that might
+			 * have changed.
+			 */
+			ptv = (struct table_val_link *)ptei->ptv;
+			ptv->pval = &pval[i];
 			continue;
+		}
 
 		/* Check if record has appeared */
 		mask_table_value(ptei->pvalue, &tval, ts->vmask);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410071822.s97IM5eO036330>