Double ofputil_uninit_group_mod() used to be harmless, but leads to double free after commit e8dba7197, which will crash if any error in group parsing happens.
Add a test to prevent this regression from happening again. Fixes: e8dba7197 ("meta-flow: Compact struct field_array.") Signed-off-by: Jarno Rajahalme <ja...@ovn.org> --- v3: New patch for v3. lib/ofp-parse.c | 4 ---- tests/ofproto-dpif.at | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c index 0568fc7..92c4693 100644 --- a/lib/ofp-parse.c +++ b/lib/ofp-parse.c @@ -1733,10 +1733,6 @@ parse_ofp_group_mod_str(struct ofputil_group_mod *gm, int command, char *error = parse_ofp_group_mod_str__(gm, command, string, usable_protocols); free(string); - - if (error) { - ofputil_uninit_group_mod(gm); - } return error; } diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index 557c8be..2978cc5 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -418,6 +418,10 @@ AT_CLEANUP AT_SETUP([ofproto-dpif - select group with hash selection method]) OVS_VSWITCHD_START add_of_ports br0 1 10 11 +# Check that parse failures after 'fields' parsing work +AT_CHECK([ovs-ofctl -O OpenFlow10 add-group br0 'group_id=1,type=select,fields(eth_dst),bukket=output:10'], [1], ,[dnl +ovs-ofctl: unknown keyword bukket +]) AT_CHECK([ovs-ofctl -O OpenFlow15 add-group br0 'group_id=1234,type=select,selection_method=hash,fields(eth_dst,ip_dst,tcp_dst),bucket=output:10,bucket=output:11']) AT_CHECK([ovs-ofctl -O OpenFlow15 add-flow br0 'ip actions=write_actions(group:1234)']) -- 2.1.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev