DF-0477 / fix.diff
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; } |