X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fofp-actions.c;h=58d0098ee529ca988817562c6734ad3555502dd6;hb=3efb60637b9a6741e7e5b7f04e4daa4d2464d8b3;hp=c98e29a6308e42f38c84509bf44b204a5094358e;hpb=e655542cf3cc10f14651fb237582ac7e55683e88;p=sliver-openvswitch.git diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index c98e29a63..58d0098ee 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -1052,6 +1052,7 @@ ofpacts_pull_openflow11_actions(struct ofpbuf *openflow, enum ofperr ofpacts_pull_openflow11_instructions(struct ofpbuf *openflow, unsigned int instructions_len, + uint8_t table_id, struct ofpbuf *ofpacts) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); @@ -1119,6 +1120,10 @@ ofpacts_pull_openflow11_instructions(struct ofpbuf *openflow, oigt = instruction_get_OFPIT11_GOTO_TABLE( insts[OVSINST_OFPIT11_GOTO_TABLE]); + if (table_id >= oigt->table_id) { + error = OFPERR_OFPBRC_BAD_TABLE_ID; + goto exit; + } ogt = ofpact_put_GOTO_TABLE(ofpacts); ogt->table_id = oigt->table_id; }