DragonFlyBSD Kernel Audit
DF-0477 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/net/ipfw3/ip_fw3.c b/sys/net/ipfw3/ip_fw3.c
--- a/sys/net/ipfw3/ip_fw3.c
+++ b/sys/net/ipfw3/ip_fw3.c
@@ -982,9 +982,15 @@
 			strcat(module_str,mod->name);
 		}
 	}
-	bzero(sopt->sopt_val, sopt->sopt_valsize);
-	bcopy(module_str, sopt->sopt_val, strlen(module_str));
-	sopt->sopt_valsize = strlen(module_str);
+	{
+		size_t mlen = strlen(module_str);
+
+		bzero(sopt->sopt_val, sopt->sopt_valsize);
+		if (mlen > sopt->sopt_valsize)
+			mlen = sopt->sopt_valsize;
+		bcopy(module_str, sopt->sopt_val, mlen);
+		sopt->sopt_valsize = mlen;
+	}
 	return 0;
 }