On Mon, May 22, 2017 at 03:54:38PM +0200, Alexander Bluhm wrote:
> On Mon, May 22, 2017 at 11:33:08AM +0000, Gerlach, Hendrik wrote:
> > A possible fix maybe would calling m_free(opts) (if opts != NULL) after
> > calling icmp_send()
>
> As the options are not allocated in icmp_send() I think it is better
> to free them in icmp_input_if() after a successful call to
> icmp_reflect().
>
> ok?
OK claudio@
> bluhm
>
> Index: netinet/ip_icmp.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip_icmp.c,v
> retrieving revision 1.167
> diff -u -p -r1.167 ip_icmp.c
> --- netinet/ip_icmp.c 4 May 2017 17:58:46 -0000 1.167
> +++ netinet/ip_icmp.c 22 May 2017 13:25:37 -0000
> @@ -591,8 +591,10 @@ reflect:
>
> icmpstat_inc(icps_reflect);
> icmpstat_inc(icps_outhist + icp->icmp_type);
> - if (!icmp_reflect(m, &opts, NULL))
> + if (!icmp_reflect(m, &opts, NULL)) {
> icmp_send(m, opts);
> + m_free(opts);
> + }
> return IPPROTO_DONE;
>
> case ICMP_REDIRECT:
>
--
:wq Claudio