From: Jouni Malinen Date: Mon, 5 Jan 2015 16:02:04 +0000 (+0200) Subject: Add wpabuf_clear_free() to allow clearing of freed memory X-Git-Tag: hostap_2_4~530 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77c45e2b35712d76248bdeed60e4065c0ffaa3d9;p=thirdparty%2Fhostap.git 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 --- 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);