aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@chromium.org>2015-02-11 14:16:28 -0500
committerAdam Langley <agl@google.com>2015-02-11 23:18:45 +0000
commit3bb4178206f63c92f0b417157d0874143da01f44 (patch)
tree385d93c87e50a199c0156e35509b77bb7d377b81
parent491b9219a943f2538a650d26a864d10e1999713a (diff)
downloadboringssl-3bb4178206f63c92f0b417157d0874143da01f44.zip
boringssl-3bb4178206f63c92f0b417157d0874143da01f44.tar.gz
boringssl-3bb4178206f63c92f0b417157d0874143da01f44.tar.bz2
Fix memory leak in pqueue_test.
pqueue_free requires the queue be empty. Change-Id: I633e18fe71ddec51d6005210fcb6570ef53b9808 Reviewed-on: https://boringssl-review.googlesource.com/3410 Reviewed-by: Adam Langley <agl@google.com>
-rw-r--r--ssl/pqueue/pqueue.c3
-rw-r--r--ssl/pqueue/pqueue_test.c15
2 files changed, 16 insertions, 2 deletions
diff --git a/ssl/pqueue/pqueue.c b/ssl/pqueue/pqueue.c
index ecaa139..14bd9b6 100644
--- a/ssl/pqueue/pqueue.c
+++ b/ssl/pqueue/pqueue.c
@@ -56,6 +56,7 @@
#include <openssl/pqueue.h>
+#include <assert.h>
#include <string.h>
#include <openssl/mem.h>
@@ -104,6 +105,8 @@ void pqueue_free(pqueue_s *pq) {
return;
}
+ /* The queue must be empty. */
+ assert(pq->items == NULL);
OPENSSL_free(pq);
}
diff --git a/ssl/pqueue/pqueue_test.c b/ssl/pqueue/pqueue_test.c
index c4b4b9d..cb688f7 100644
--- a/ssl/pqueue/pqueue_test.c
+++ b/ssl/pqueue/pqueue_test.c
@@ -19,6 +19,17 @@
#include <openssl/ssl.h>
+static void clear_and_free_queue(pqueue q) {
+ for (;;) {
+ pitem *item = pqueue_pop(q);
+ if (item == NULL) {
+ break;
+ }
+ pitem_free(item);
+ }
+ pqueue_free(q);
+}
+
static int trivial(void) {
pqueue q = pqueue_new();
if (q == NULL) {
@@ -37,7 +48,7 @@ static int trivial(void) {
return 0;
}
pitem_free(item);
- pqueue_free(q);
+ clear_and_free_queue(q);
return 1;
}
@@ -101,7 +112,7 @@ static int fixed_random(void) {
}
curr = next;
}
- pqueue_free(q);
+ clear_and_free_queue(q);
return 1;
}