emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-bug-tracker] bug#8761: closed (gnutls should use xmalloc not mall


From: GNU bug Tracking System
Subject: [Emacs-bug-tracker] bug#8761: closed (gnutls should use xmalloc not malloc)
Date: Thu, 02 Jun 2011 18:44:02 +0000

Your message dated Thu, 02 Jun 2011 11:43:07 -0700
with message-id <address@hidden>
and subject line patch installed into Emacs trunk
has caused the GNU bug report #8761,
regarding gnutls should use xmalloc not malloc
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
8761: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8761
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: gnutls should use xmalloc not malloc Date: Mon, 30 May 2011 01:35:26 -0700 User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10
Here's a proposed patch for the problem.

* gnutls.c: Use Emacs's memory allocators.
Without this change, the gnutls library would invoke malloc etc.
directly, which causes problems on non-SYNC_INPUT hosts, and which
runs afoul of improving memory_full behavior.
(fn_gnutls_global_set_mem_functions): New macro or function pointer.
(emacs_gnutls_global_init): Use it to specify xmalloc, xrealloc,
xfree instead of the default malloc, realloc, free.
(Fgnutls_boot): No need to check for memory allocation failure,
since xmalloc does that for us.
=== modified file 'src/gnutls.c'
--- src/gnutls.c        2011-05-23 00:03:40 +0000
+++ src/gnutls.c        2011-05-30 07:53:40 +0000
@@ -110,6 +110,10 @@
 DEF_GNUTLS_FN (int, gnutls_global_init, (void));
 DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
 DEF_GNUTLS_FN (void, gnutls_global_set_log_level, (int));
+DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions,
+              (gnutls_alloc_function, gnutls_alloc_function,
+               gnutls_is_secure_function, gnutls_realloc_function,
+               gnutls_free_function));
 DEF_GNUTLS_FN (int, gnutls_handshake, (gnutls_session_t));
 DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, 
gnutls_connection_end_t));
 DEF_GNUTLS_FN (int, gnutls_priority_set_direct,
@@ -168,6 +172,7 @@
   LOAD_GNUTLS_FN (library, gnutls_global_init);
   LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
   LOAD_GNUTLS_FN (library, gnutls_global_set_log_level);
+  LOAD_GNUTLS_FN (library, gnutls_global_set_mem_functions);
   LOAD_GNUTLS_FN (library, gnutls_handshake);
   LOAD_GNUTLS_FN (library, gnutls_init);
   LOAD_GNUTLS_FN (library, gnutls_priority_set_direct);
@@ -213,6 +218,7 @@
 #define fn_gnutls_global_init                  gnutls_global_init
 #define fn_gnutls_global_set_log_function      gnutls_global_set_log_function
 #define fn_gnutls_global_set_log_level         gnutls_global_set_log_level
+#define fn_gnutls_global_set_mem_functions     gnutls_global_set_mem_functions
 #define fn_gnutls_handshake                    gnutls_handshake
 #define fn_gnutls_init                         gnutls_init
 #define fn_gnutls_priority_set_direct          gnutls_priority_set_direct
@@ -582,7 +588,11 @@
   int ret = GNUTLS_E_SUCCESS;

   if (!gnutls_global_initialized)
-    ret = fn_gnutls_global_init ();
+    {
+      fn_gnutls_global_set_mem_functions (xmalloc, xmalloc, NULL,
+                                         xrealloc, xfree);
+      ret = fn_gnutls_global_init ();
+    }
   gnutls_global_initialized = 1;

   return gnutls_make_error (ret);
@@ -768,8 +778,7 @@
     {
       GNUTLS_LOG (2, max_log_level, "allocating x509 credentials");
       x509_cred = XPROCESS (proc)->gnutls_x509_cred;
-      if (fn_gnutls_certificate_allocate_credentials (&x509_cred) < 0)
-        memory_full ();
+      fn_gnutls_certificate_allocate_credentials (&x509_cred);

       if (NUMBERP (verify_flags))
         {
@@ -792,8 +801,7 @@
     {
       GNUTLS_LOG (2, max_log_level, "allocating anon credentials");
       anon_cred = XPROCESS (proc)->gnutls_anon_cred;
-      if (fn_gnutls_anon_allocate_client_credentials (&anon_cred) < 0)
-        memory_full ();
+      fn_gnutls_anon_allocate_client_credentials (&anon_cred);
     }
   else
     {




--- End Message ---
--- Begin Message --- Subject: patch installed into Emacs trunk Date: Thu, 02 Jun 2011 11:43:07 -0700 User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Thunderbird/3.1.10
I merged the abovementioned patch into the Emacs trunk,
as bzr #104480, and am marking this bug as done.
If there are any further problems with it please let me know.


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]