# define HAVE_GNUTLS_ETM_STATUS
#endif
+#if GNUTLS_VERSION_NUMBER < 0x030600
+# define HAVE_GNUTLS_COMPRESSION_GET
+#endif
+
/* gnutls_mac_get_nonce_size was added in GnuTLS 3.2.0, but was
exported only since 3.3.0. */
#if GNUTLS_VERSION_NUMBER >= 0x030300
(gnutls_cipher_algorithm_t));
DEF_DLL_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
DEF_DLL_FN (const char *, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
+#ifdef HAVE_GNUTLS_COMPRESSION_GET
DEF_DLL_FN (gnutls_compression_method_t, gnutls_compression_get,
(gnutls_session_t));
DEF_DLL_FN (const char *, gnutls_compression_get_name,
(gnutls_compression_method_t));
+#endif
DEF_DLL_FN (unsigned, gnutls_safe_renegotiation_status, (gnutls_session_t));
# ifdef HAVE_GNUTLS3
LOAD_DLL_FN (library, gnutls_cipher_get_name);
LOAD_DLL_FN (library, gnutls_mac_get);
LOAD_DLL_FN (library, gnutls_mac_get_name);
+# ifdef HAVE_GNUTLS_COMPRESSION_GET
LOAD_DLL_FN (library, gnutls_compression_get);
LOAD_DLL_FN (library, gnutls_compression_get_name);
+# endif
LOAD_DLL_FN (library, gnutls_safe_renegotiation_status);
# ifdef HAVE_GNUTLS3
LOAD_DLL_FN (library, gnutls_rnd);
# define gnutls_kx_get_name fn_gnutls_kx_get_name
# define gnutls_mac_get fn_gnutls_mac_get
# define gnutls_mac_get_name fn_gnutls_mac_get_name
-# define gnutls_compression_get fn_gnutls_compression_get
-# define gnutls_compression_get_name fn_gnutls_compression_get_name
+# ifdef HAVE_GNUTLS_COMPRESSION_GET
+# define gnutls_compression_get fn_gnutls_compression_get
+# define gnutls_compression_get_name fn_gnutls_compression_get_name
+# endif
# define gnutls_safe_renegotiation_status fn_gnutls_safe_renegotiation_status
# define gnutls_pk_algorithm_get_name fn_gnutls_pk_algorithm_get_name
# define gnutls_pk_bits_to_sec_param fn_gnutls_pk_bits_to_sec_param
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
- unsigned char *buf = xmalloc(size * sizeof (unsigned char));
+ USE_SAFE_ALLOCA;
+ char *buf = SAFE_ALLOCA (size);
err = gnutls_x509_crt_export (cert, GNUTLS_X509_FMT_PEM, buf, &size);
check_memory_full (err);
if (err < GNUTLS_E_SUCCESS)
- {
- xfree (buf);
- error ("GnuTLS certificate export error: %s", emacs_gnutls_strerror (err));
- }
+ error ("GnuTLS certificate export error: %s",
+ emacs_gnutls_strerror (err));
- return build_string(buf);
+ Lisp_Object result = build_string (buf);
+ SAFE_FREE ();
+ return result;
}
else if (err < GNUTLS_E_SUCCESS)
error ("GnuTLS certificate export error: %s", emacs_gnutls_strerror (err));
(gnutls_mac_get (state)))));
/* Compression name. */
- result = nconc2
- (result, list2 (intern (":compression"),
- build_string (gnutls_compression_get_name
- (gnutls_compression_get (state)))));
+#ifdef HAVE_GNUTLS_COMPRESSION_GET
+ Lisp_Object compression = build_string (gnutls_compression_get_name
+ (gnutls_compression_get (state)));
+#else
+ Lisp_Object compression = build_string ("NULL");
+#endif
+ result = nconc2 (result, list2 (intern (":compression"), compression));
/* Encrypt-then-MAC. */
- result = nconc2
- (result, list2 (intern (":encrypt-then-mac"),
+ Lisp_Object etm_status = Qnil;
#ifdef HAVE_GNUTLS_ETM_STATUS
- gnutls_session_etm_status (state) ? Qt : Qnil
-#else
- Qnil
+ if (gnutls_session_etm_status (state))
+ etm_status = Qt;
#endif
- ));
+ result = nconc2 (result, list2 (intern (":encrypt-then-mac"), etm_status));
/* Renegotiation Indication */
result = nconc2
va_end (ap);
}
-DEFUN ("gnutls-format-certificate", Fgnutls_format_certificate, Sgnutls_format_certificate, 1, 1, 0,
+DEFUN ("gnutls-format-certificate", Fgnutls_format_certificate,
+ Sgnutls_format_certificate, 1, 1, 0,
doc: /* Format a X.509 certificate to a string.
Given a PEM-encoded X.509 certificate CERT, returns a human-readable
if (err < GNUTLS_E_SUCCESS)
error ("gnutls-format-certificate error: %s", emacs_gnutls_strerror (err));
- unsigned char *crt_buf = SDATA (cert);
- gnutls_datum_t crt_data = { crt_buf, strlen (crt_buf) };
+ gnutls_datum_t crt_data = { SDATA (cert), strlen (SSDATA (cert)) };
err = gnutls_x509_crt_import (crt, &crt_data, GNUTLS_X509_FMT_PEM);
check_memory_full (err);
if (err < GNUTLS_E_SUCCESS)
{
gnutls_x509_crt_deinit (crt);
- error ("gnutls-format-certificate error: %s", emacs_gnutls_strerror (err));
+ error ("gnutls-format-certificate error: %s",
+ emacs_gnutls_strerror (err));
}
gnutls_datum_t out;
if (err < GNUTLS_E_SUCCESS)
{
gnutls_x509_crt_deinit (crt);
- error ("gnutls-format-certificate error: %s", emacs_gnutls_strerror (err));
+ error ("gnutls-format-certificate error: %s",
+ emacs_gnutls_strerror (err));
}
char *out_buf = xmalloc ((out.size + 1) * sizeof (char));
hints.ai_socktype = socktype;
msg = network_lookup_address_info_1 (host, portstring, &hints, &res);
- if (!EQ(msg, Qt))
- {
- error ("%s", SSDATA (msg));
- }
+ if (!EQ (msg, Qt))
+ error ("%s", SSDATA (msg));
for (lres = res; lres; lres = lres->ai_next)
addrinfos = Fcons (conv_addrinfo_to_lisp (lres), addrinfos);
str = SSDATA (code_convert_string_norecord
(build_string (str), Vlocale_coding_system, 0));
AUTO_STRING (format, "%s/%s %s");
- msg = CALLN (Fformat, format, host, build_string (service), build_string (str));
+ msg = CALLN (Fformat, format, host, build_string (service),
+ build_string (str));
#else
AUTO_STRING (format, "%s/%s getaddrinfo error %d");
- msg = CALLN (Fformat, format, host, build_string (service), make_number (ret));
+ msg = CALLN (Fformat, format, host, build_string (service),
+ make_number (ret));
#endif
}
return msg;
hints.ai_socktype = SOCK_DGRAM;
msg = network_lookup_address_info_1 (name, NULL, &hints, &res);
- if (!EQ(msg, Qt))
- {
- message ("%s", SSDATA(msg));
- }
+ if (!EQ (msg, Qt))
+ message ("%s", SSDATA(msg));
else
{
for (lres = res; lres; lres = lres->ai_next)
- {
- addresses = Fcons (conv_sockaddr_to_lisp
- (lres->ai_addr, lres->ai_addrlen),
- addresses);
- }
+ addresses = Fcons (conv_sockaddr_to_lisp (lres->ai_addr,
+ lres->ai_addrlen),
+ addresses);
addresses = Fnreverse (addresses);
freeaddrinfo (res);