summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2012-06-07 13:05:41 -0700
committerEthan Jackson <ethan@nicira.com>2012-06-07 13:36:44 -0700
commitb42c6f6033ce5a6dfd8ed1769c63a8b68da5ace1 (patch)
treeee32ed3d85b001cac6588bd38859175c565e8b8f
parentb9a30fe2ebb1d300178d6ba7628b3dc40ff1512b (diff)
downloadopenvswitch-b42c6f6033ce5a6dfd8ed1769c63a8b68da5ace1.tar.gz
ofproto: Fix use after free in ofoperation_complete().
In one edge case, ofoperation_complete() destroys its rule, without updating its ofoperation that the rule is gone. Later in the same function, ofoperation_destroy() attempts to modify the rule which already destroyed. Bug #11797. Signed-off-by: Ethan Jackson <ethan@nicira.com>
-rw-r--r--ofproto/ofproto.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 85509e7af..829271fbc 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -3212,6 +3212,7 @@ ofoperation_complete(struct ofoperation *op, int error)
classifier_remove(table, &rule->cr);
}
ofproto_rule_destroy__(rule);
+ op->rule = NULL;
}
op->victim = NULL;
break;