More specifically, this code in bfd_process_packet() sees p->l7 == NULL
and does pointer arithmetic on NULL, which seems bad:

    msg = ofpbuf_at(p, (uint8_t *)p->l7 - (uint8_t *)p->data, BFD_PACKET_LEN);


On Wed, Oct 16, 2013 at 02:20:15PM -0700, Alex Wang wrote:
> Have a question,
> 
> function flow_compose() is called when we specify '-generate' option.  in
> that case, the packet will not have any l7 data.  so, seem to me there is
> no change to the output.
> 
> Thanks,
> 
> 
> On Mon, Sep 30, 2013 at 2:47 PM, Ben Pfaff <b...@nicira.com> wrote:
> 
> > flow_extract() fills in ->l7 but flow_compose() wasn't doing it, which
> > confused bfd_process_packet() when invoked via the ofproto/trace appctl
> > command.
> >
> > Signed-off-by: Ben Pfaff <b...@nicira.com>
> > ---
> >  lib/flow.c |    1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/lib/flow.c b/lib/flow.c
> > index 0678c6f..7372e3b 100644
> > --- a/lib/flow.c
> > +++ b/lib/flow.c
> > @@ -1032,6 +1032,7 @@ flow_compose(struct ofpbuf *b, const struct flow
> > *flow)
> >                  icmp->icmp_code = ntohs(flow->tp_dst);
> >                  icmp->icmp_csum = csum(icmp, ICMP_HEADER_LEN);
> >              }
> > +            b->l7 = ofpbuf_tail(b);
> >          }
> >
> >          ip = b->l3;
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> >
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to