Commit 5b9508c9 authored by Nick Mathewson's avatar Nick Mathewson 🐛
Browse files

Add a tor_str_wipe_and_free() function.

Frequently we want to do

    if (s) {
      memwipe(s, 0, sizeof(s));
      tor_free(s);
    }

and it's good to have a way to do this concisely.
parent c4742b89
......@@ -109,3 +109,17 @@ memwipe(void *mem, uint8_t byte, size_t sz)
**/
memset(mem, byte, sz);
}
/**
* Securely all memory in <b>str</b>, then free it.
*
* As tor_free(), tolerates null pointers.
**/
void
tor_str_wipe_and_free_(char *str)
{
if (!str)
return;
memwipe(str, 0, strlen(str));
tor_free_(str);
}
......@@ -14,8 +14,18 @@
#define TOR_CRYPTO_UTIL_H
#include "lib/cc/torint.h"
#include "lib/malloc/malloc.h"
/** OpenSSL-based utility functions. */
void memwipe(void *mem, uint8_t byte, size_t sz);
void tor_str_wipe_and_free_(char *str);
/**
* Securely all memory in <b>str</b>, then free it.
*
* As tor_free(), tolerates null pointers, and sets <b>str</b> to NULL.
**/
#define tor_str_wipe_and_free(str) \
FREE_AND_NULL(char, tor_str_wipe_and_free_, (str))
#endif /* !defined(TOR_CRYPTO_UTIL_H) */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment