** API and ABI modifications:
dane_verify_crt_raw2: Added
+gnutls_memset: Added
* Version 3.3.2 (released 2014-05-06)
_gnutls_mpi_release(mpi); \
}
-void _gnutls_safe_memset(void *data, int c, size_t size);
-
-#define zeroize_key(x, size) _gnutls_safe_memset(x, 0, size)
+#define zeroize_key(x, size) gnutls_memset(x, 0, size)
#define zeroize_temp_key zeroize_key
#define zrelease_temp_mpi_key zrelease_mpi_key
extern gnutls_realloc_function gnutls_realloc;
extern gnutls_calloc_function gnutls_calloc;
extern gnutls_free_function gnutls_free;
+void gnutls_memset(void *data, int c, size_t size);
extern char *(*gnutls_strdup) (const char *);
# include <gnutls_int.h>
#endif
-/* This is based on a nice trick for safe memset,
- * sent by David Jacobson in the openssl-dev mailing list.
- */
-
-void _gnutls_safe_memset(void *data, int c, size_t size)
+/**
+ * gnutls_memset:
+ * @data: the memory to set
+ * @c: the constant byte to fill the memory with
+ * @n: the size of memory
+ *
+ * This function will operate similarly to memset(), but will
+ * not be optimized out by the compiler.
+ *
+ * Returns: void.
+ *
+ * Since: 3.3.3
+ **/
+void gnutls_memset(void *data, int c, size_t size)
{
volatile unsigned volatile_zero = 0;
volatile char *vdata = (volatile char*)data;
+ /* This is based on a nice trick for safe memset,
+ * sent by David Jacobson in the openssl-dev mailing list.
+ */
+
do {
memset(data, c, size);
} while(vdata[volatile_zero] != c);
{
char x[64];
- safe_memset(x, 0, sizeof(x));
+ gnutls_memset(x, 0, sizeof(x));
return 0;