From 77c45e2b35712d76248bdeed60e4065c0ffaa3d9 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Mon, 5 Jan 2015 18:02:04 +0200 Subject: [PATCH] Add wpabuf_clear_free() to allow clearing of freed memory This can be useful when a wpabuf is used to store private data that should not be left in heap after use. Signed-off-by: Jouni Malinen --- src/utils/wpabuf.c | 9 +++++++++ src/utils/wpabuf.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/utils/wpabuf.c b/src/utils/wpabuf.c index b257b365c..7aafa0a51 100644 --- a/src/utils/wpabuf.c +++ b/src/utils/wpabuf.c @@ -205,6 +205,15 @@ void wpabuf_free(struct wpabuf *buf) } +void wpabuf_clear_free(struct wpabuf *buf) +{ + if (buf) { + os_memset(wpabuf_mhead(buf), 0, wpabuf_len(buf)); + wpabuf_free(buf); + } +} + + void * wpabuf_put(struct wpabuf *buf, size_t len) { void *tmp = wpabuf_mhead_u8(buf) + wpabuf_len(buf); diff --git a/src/utils/wpabuf.h b/src/utils/wpabuf.h index dbce925ca..c3ef1bae3 100644 --- a/src/utils/wpabuf.h +++ b/src/utils/wpabuf.h @@ -32,6 +32,7 @@ struct wpabuf * wpabuf_alloc_ext_data(u8 *data, size_t len); struct wpabuf * wpabuf_alloc_copy(const void *data, size_t len); struct wpabuf * wpabuf_dup(const struct wpabuf *src); void wpabuf_free(struct wpabuf *buf); +void wpabuf_clear_free(struct wpabuf *buf); void * wpabuf_put(struct wpabuf *buf, size_t len); struct wpabuf * wpabuf_concat(struct wpabuf *a, struct wpabuf *b); struct wpabuf * wpabuf_zeropad(struct wpabuf *buf, size_t len);