aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-01-13 13:30:42 -0800
committerBen Pfaff <blp@nicira.com>2012-01-13 15:12:01 -0800
commitd962ebc5dfaf63fb932940ab29d986876ff0749e (patch)
treeed20bce0bb1341424ed81efa5991afe3c18abc32 /lib
parent49e17438373dbbaac54e143e32cc4c60118725ef (diff)
netdev-dummy: Fix use-after-free error.
Found by valgrind. Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/netdev-dummy.c6
1 files changed, 4 insertions, 2 deletions
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