ofpacts_pull_openflow_instructions() should fill 'ofpacts' with a list of OpenFlow actions and each action (including the last one) should be padded to OFP_ACTION_ALIGN(8) bytes.
In most of the cases this is taken care of (e.g. by ofpacts_decode), but for the Goto-Table instruction (and Clear-Actions, based on a quick code inspection), this wasn't the case. This caused the copy operation in recirc_unroll_actions() to read two extra bytes after an allocated area (not a big deal, but enough to displease the AddressSanitizer). Signed-off-by: William Tu <[email protected]> Signed-off-by: Daniele Di Proietto <[email protected]> Co-authored-by: Daniele Di Proietto <[email protected]> --- lib/ofp-actions.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index 354c768..f900aa9 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -6334,6 +6334,8 @@ ofpacts_pull_openflow_instructions(struct ofpbuf *openflow, ogt->table_id = oigt->table_id; } + ofpact_pad(ofpacts); + error = ofpacts_verify(ofpacts->data, ofpacts->size, (1u << N_OVS_INSTRUCTIONS) - 1, 0); exit: -- 2.5.0 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
