On 16 July 2015 at 13:52, Ben Pfaff <b...@nicira.com> wrote: > On Wed, Jul 15, 2015 at 10:18:29PM -0700, Joe Stringer wrote: >> This code attempts to first check whether another error was detected for >> the string it is parsing, then if it's not at the end of the tokens, >> report an error. However, 'errorp' is always a valid pointer to a >> 'char *', so the first check in this statement always evaluates false. >> >> Furthermore, this behaviour may be optimised out by modern compilers >> due to the prior dereference in expr_parse(). Fix this to check the >> actual value of *errorp. >> >> Found by MIT STACK analyzer. >> >> Signed-off-by: Joe Stringer <joestrin...@nicira.com> > > The tests should have caught this bug but I forgot to put in a test! > > Therefore please squash in the following: > > diff --git a/tests/ovn.at b/tests/ovn.at > index 261e32a..d1696de 100644 > --- a/tests/ovn.at > +++ b/tests/ovn.at > @@ -255,6 +255,8 @@ eth.src > 00:00:00:00:11:11/00:00:00:00:ff:ff => Only == > and != operators may be > ip4.src == ::1 => 128-bit constant is not compatible with 32-bit field > ip4.src. > > 1 == eth.type == 2 => Range expressions must have the form `x < field < y' > or `x > field > y', with each `<' optionally replaced by `<=' or `>' by `>='). > + > +eth.dst[40] x => Extra tokens at end of input. > ]]) > sed 's/ =>.*//' test-cases.txt > input.txt > sed 's/.* => //' test-cases.txt > expout > > Acked-by: Ben Pfaff <b...@nicira.com>
Thanks, I rolled in your test and applied this series on top of master. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev