svn commit: r246815 - projects/diffused_head/sbin/ipfw/diffuse_exporter

Lawrence Stewart lstewart at FreeBSD.org
Fri Feb 15 01:25:28 UTC 2013


Author: lstewart
Date: Fri Feb 15 01:25:27 2013
New Revision: 246815
URL: http://svnweb.freebsd.org/changeset/base/246815

Log:
  Mitigate against possible unaligned access when serialising data into a buffer.
  
  Reported by:	clang

Modified:
  projects/diffused_head/sbin/ipfw/diffuse_exporter/diffuse_exporter.c

Modified: projects/diffused_head/sbin/ipfw/diffuse_exporter/diffuse_exporter.c
==============================================================================
--- projects/diffused_head/sbin/ipfw/diffuse_exporter/diffuse_exporter.c	Fri Feb 15 01:24:05 2013	(r246814)
+++ projects/diffused_head/sbin/ipfw/diffuse_exporter/diffuse_exporter.c	Fri Feb 15 01:25:27 2013	(r246815)
@@ -43,6 +43,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/endian.h>
 #include <sys/queue.h>
 #include <sys/socket.h>
 #include <sys/tree.h>
@@ -628,19 +629,17 @@ handle_anode_state_request(struct action
 
 		/* Add the IE data for the default flowrule template. */
 		for (i = 0; i < N_DEFAULT_FLOWRULE_TEMPLATE_ITEMS; i++) {
-			*((uint16_t *)(dstbuf + offs)) =
-			    htons(dip_info[def_flowrule_template[i]].id);
+			be16enc(dstbuf + offs,
+			    dip_info[def_flowrule_template[i]].id);
 			offs += sizeof(uint16_t);
 			if (def_flowrule_template[i] == DIP_IE_ACTION ||
 			    def_flowrule_template[i] == DIP_IE_EXPORT_NAME ||
 			    def_flowrule_template[i] == DIP_IE_CLASSIFIER_NAME) {
-				*((uint16_t *)(dstbuf + offs)) =
-				    htons((uint16_t)DI_MAX_NAME_STR_LEN);
+				be16enc(dstbuf + offs, DI_MAX_NAME_STR_LEN);
 				offs += sizeof(uint16_t);
 			} else if (def_flowrule_template[i] ==
 			    DIP_IE_ACTION_PARAMS) {
-				*((uint16_t *)(dstbuf + offs)) =
-				    htons((uint16_t)DI_MAX_PARAM_STR_LEN);
+				be16enc(dstbuf + offs, DI_MAX_PARAM_STR_LEN);
 				offs += sizeof(uint16_t);
 			}
 		}


More information about the svn-src-projects mailing list