From: Ben Pfaff Date: Fri, 13 Jan 2012 21:30:42 +0000 (-0800) Subject: netdev-dummy: Fix use-after-free error. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78945f19d7147096294cb8557f3eafbb809017a3;p=openvswitch netdev-dummy: Fix use-after-free error. Found by valgrind. Signed-off-by: Ben Pfaff --- diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 94dea765..d94af415 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011 Nicira Networks. + * Copyright (c) 2010, 2011, 2012 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -156,6 +156,7 @@ netdev_dummy_recv(struct netdev *netdev_, void *buffer, size_t size) { struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); struct ofpbuf *packet; + size_t packet_size; if (list_is_empty(&netdev->recv_queue)) { return -EAGAIN; @@ -165,11 +166,12 @@ netdev_dummy_recv(struct netdev *netdev_, void *buffer, size_t size) if (packet->size > size) { return -EMSGSIZE; } + packet_size = packet->size; memcpy(buffer, packet->data, packet->size); ofpbuf_delete(packet); - return packet->size; + return packet_size; } static void