[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/tzz/nettle 5f121bf: WIP: GnuTLS: use SAFE_ALLOCA a
From: |
Teodor Zlatanov |
Subject: |
[Emacs-diffs] scratch/tzz/nettle 5f121bf: WIP: GnuTLS: use SAFE_ALLOCA as suggested |
Date: |
Mon, 17 Apr 2017 13:32:14 -0400 (EDT) |
branch: scratch/tzz/nettle
commit 5f121bfe1cdcb5de1e0ee84e3721084fccd3bed4
Author: Ted Zlatanov <address@hidden>
Commit: Ted Zlatanov <address@hidden>
WIP: GnuTLS: use SAFE_ALLOCA as suggested
---
src/gnutls.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/gnutls.c b/src/gnutls.c
index 96ca9b1..281fbe0 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -1766,7 +1766,8 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
}
size_t storage_length = SCHARS (input) + gnutls_cipher_get_tag_size (gca);
- Lisp_Object storage = make_uninit_string (storage_length);
+ USE_SAFE_ALLOCA;
+ unsigned char *storage = SAFE_ALLOCA (storage_length);
const char* aead_auth_data = NULL;
size_t aead_auth_size = 0;
@@ -1799,7 +1800,7 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
aead_auth_data, aead_auth_size,
gnutls_cipher_get_tag_size (gca),
SSDATA (input), SCHARS (input),
- SSDATA (storage), &storage_length);
+ storage, &storage_length);
}
else
{
@@ -1808,7 +1809,7 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
aead_auth_data, aead_auth_size,
gnutls_cipher_get_tag_size (gca),
SSDATA (input), SCHARS (input),
- SSDATA (storage), &storage_length);
+ storage, &storage_length);
}
Fclear_string (key);
@@ -1820,7 +1821,8 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
if (ret < GNUTLS_E_SUCCESS)
{
- Fclear_string (storage);
+ memset (storage, 0, storage_length);
+ xfree (storage);
gnutls_aead_cipher_deinit (acipher);
const char* str = gnutls_strerror (ret);
if (!str)
@@ -1834,7 +1836,9 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
// TODO: switch this to use a resize_string_data() function when
// that's provided in the C core, to avoid the extra copy.
- return make_unibyte_string (SSDATA (storage), storage_length);
+ Lisp_Object output = make_unibyte_string (storage, storage_length);
+ memset (storage, 0, storage_length);
+ return output;
#else
error ("GnuTLS AEAD cipher %ld was invalid or not found", (long) gca);
return Qnil;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] scratch/tzz/nettle 5f121bf: WIP: GnuTLS: use SAFE_ALLOCA as suggested,
Teodor Zlatanov <=