[PATCH 7/8] mbuffers: Add _mbuffer_xfree operation.

Jonathan Bastien-Filiatrault joe at x2a.org
Thu Sep 9 00:34:46 CEST 2010


Signed-off-by: Jonathan Bastien-Filiatrault <joe at x2a.org>

diff --git a/lib/gnutls_mbuffers.h b/lib/gnutls_mbuffers.h
index 8f08a96..beb1eab 100644
--- a/lib/gnutls_mbuffers.h
+++ b/lib/gnutls_mbuffers.h
@@ -25,7 +25,8 @@
 #ifndef GNUTLS_MBUFFERS_H
 # define GNUTLS_MBUFFERS_H
 
-#include "gnutls_int.h"
+#include <gnutls_int.h>
+#include <gnutls_errors.h>
 
 void _mbuffer_init (mbuffer_head_st *buf);
 void _mbuffer_clear (mbuffer_head_st *buf);
@@ -95,4 +96,18 @@ inline static mbuffer_st* _gnutls_handshake_alloc(size_t size, size_t maximum)
   return ret;
 }
 
+/* Free a segment, if the pointer is not NULL
+ *
+ * We take a ** to detect and fix double free bugs (the dangling
+ * pointer case). It also makes sure the pointer has a known value
+ * after freeing.
+ */
+inline static void _mbuffer_xfree(mbuffer_st **bufel)
+{
+  if(*bufel)
+    gnutls_free(*bufel);
+
+  *bufel = NULL;
+}
+
 #endif
-- 
1.7.1





More information about the Gnutls-devel mailing list