ofproto: Fix use-after-free error in facet_revalidate().
authorBen Pfaff <blp@nicira.com>
Mon, 13 Dec 2010 20:25:01 +0000 (12:25 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 13 Dec 2010 22:26:18 +0000 (14:26 -0800)
Found by valgrind.

ofproto/ofproto.c

index c7f211ae3f93328823ebc0a038068c1033363c75..8b52b80ade0757c01f024d828ff7114ba421d664 100644 (file)
@@ -2478,8 +2478,6 @@ facet_revalidate(struct ofproto *ofproto, struct facet *facet)
         facet_flush_stats(ofproto, facet);
     }
 
-    ofpbuf_delete(odp_actions);
-
     /* Update 'facet' now that we've taken care of all the old state. */
     facet->tags = ctx.tags;
     facet->nf_flow.output_iface = ctx.nf_output_iface;
@@ -2497,6 +2495,8 @@ facet_revalidate(struct ofproto *ofproto, struct facet *facet)
         facet->used = new_rule->created;
     }
 
+    ofpbuf_delete(odp_actions);
+
     return true;
 }
 \f