aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog14
-rw-r--r--src/gnutls.c139
2 files changed, 80 insertions, 73 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 762ce486390..09268d1b6cd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,17 @@
12014-12-10 Paul Eggert <eggert@cs.ucla.edu>
2
3 Fix glitches in gnutls.c, mostly memory-related
4 * gnutls.c: Sort macro definitions by name.
5 (fn_gnutls_transport_set_errno): Omit unreachable definition.
6 (fn_gnutls_x509_crt_get_signature): Omit unused symbol.
7 (gnutls_hex_string): Arg is now unsigned char *, to avoid a cast.
8 Prefer ptrdiff_t for sizes. Check for arithmetic overflow when
9 calculating string length. Use make_uninit_string, to avoid
10 copying the string. Cast the char, not the pointer.
11 (gnutls_certificate_details): Use xmalloc and xfree, not malloc
12 and free. Work even for dates past the year 9999. Use void *
13 for buffers, to avoid casts.
14
12014-12-09 Andy Moreton <andrewjmoreton@gmail.com> (tiny change) 152014-12-09 Andy Moreton <andrewjmoreton@gmail.com> (tiny change)
2 16
3 * gnutls.c (gnutls_protocol_get_name): Fix a copy/paste typo. 17 * gnutls.c (gnutls_protocol_get_name): Fix a copy/paste typo.
diff --git a/src/gnutls.c b/src/gnutls.c
index aa800be2576..4de2eaf5b52 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -317,65 +317,61 @@ init_gnutls_functions (void)
317#define fn_gnutls_certificate_set_x509_trust_file gnutls_certificate_set_x509_trust_file 317#define fn_gnutls_certificate_set_x509_trust_file gnutls_certificate_set_x509_trust_file
318#define fn_gnutls_certificate_type_get gnutls_certificate_type_get 318#define fn_gnutls_certificate_type_get gnutls_certificate_type_get
319#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2 319#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2
320#define fn_gnutls_cipher_get gnutls_cipher_get
321#define fn_gnutls_cipher_get_name gnutls_cipher_get_name
320#define fn_gnutls_credentials_set gnutls_credentials_set 322#define fn_gnutls_credentials_set gnutls_credentials_set
321#define fn_gnutls_deinit gnutls_deinit 323#define fn_gnutls_deinit gnutls_deinit
322#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
323#define fn_gnutls_dh_get_prime_bits gnutls_dh_get_prime_bits 324#define fn_gnutls_dh_get_prime_bits gnutls_dh_get_prime_bits
325#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
324#define fn_gnutls_error_is_fatal gnutls_error_is_fatal 326#define fn_gnutls_error_is_fatal gnutls_error_is_fatal
325#define fn_gnutls_global_init gnutls_global_init 327#define fn_gnutls_global_init gnutls_global_init
326#define fn_gnutls_global_set_log_function gnutls_global_set_log_function
327#ifdef HAVE_GNUTLS3 328#ifdef HAVE_GNUTLS3
328#define fn_gnutls_global_set_audit_log_function gnutls_global_set_audit_log_function 329#define fn_gnutls_global_set_audit_log_function gnutls_global_set_audit_log_function
329#endif 330#endif
331#define fn_gnutls_global_set_log_function gnutls_global_set_log_function
330#define fn_gnutls_global_set_log_level gnutls_global_set_log_level 332#define fn_gnutls_global_set_log_level gnutls_global_set_log_level
331#define fn_gnutls_global_set_mem_functions gnutls_global_set_mem_functions 333#define fn_gnutls_global_set_mem_functions gnutls_global_set_mem_functions
332#define fn_gnutls_handshake gnutls_handshake 334#define fn_gnutls_handshake gnutls_handshake
333#define fn_gnutls_init gnutls_init 335#define fn_gnutls_init gnutls_init
336#define fn_gnutls_kx_get gnutls_kx_get
337#define fn_gnutls_kx_get_name gnutls_kx_get_name
338#define fn_gnutls_mac_get gnutls_mac_get
339#define fn_gnutls_mac_get_name gnutls_mac_get_name
340#define fn_gnutls_pk_algorithm_get_name gnutls_pk_algorithm_get_name
341#define fn_gnutls_pk_bits_to_sec_param gnutls_pk_bits_to_sec_param
334#define fn_gnutls_priority_set_direct gnutls_priority_set_direct 342#define fn_gnutls_priority_set_direct gnutls_priority_set_direct
343#define fn_gnutls_protocol_get_name gnutls_protocol_get_name
344#define fn_gnutls_protocol_get_version gnutls_protocol_get_version
335#define fn_gnutls_record_check_pending gnutls_record_check_pending 345#define fn_gnutls_record_check_pending gnutls_record_check_pending
336#define fn_gnutls_record_recv gnutls_record_recv 346#define fn_gnutls_record_recv gnutls_record_recv
337#define fn_gnutls_record_send gnutls_record_send 347#define fn_gnutls_record_send gnutls_record_send
348#define fn_gnutls_sec_param_get_name gnutls_sec_param_get_name
349#define fn_gnutls_server_name_set gnutls_server_name_set
350#define fn_gnutls_sign_get_name gnutls_sign_get_name
338#define fn_gnutls_strerror gnutls_strerror 351#define fn_gnutls_strerror gnutls_strerror
339#ifdef WINDOWSNT
340#define fn_gnutls_transport_set_errno gnutls_transport_set_errno
341#endif
342#define fn_gnutls_transport_set_ptr2 gnutls_transport_set_ptr2 352#define fn_gnutls_transport_set_ptr2 gnutls_transport_set_ptr2
343#define fn_gnutls_x509_crt_check_hostname gnutls_x509_crt_check_hostname 353#define fn_gnutls_x509_crt_check_hostname gnutls_x509_crt_check_hostname
344#define fn_gnutls_x509_crt_deinit gnutls_x509_crt_deinit 354#define fn_gnutls_x509_crt_deinit gnutls_x509_crt_deinit
345#define fn_gnutls_x509_crt_import gnutls_x509_crt_import
346#define fn_gnutls_x509_crt_init gnutls_x509_crt_init
347#define fn_gnutls_x509_crt_get_fingerprint gnutls_x509_crt_get_fingerprint
348#define fn_gnutls_x509_crt_get_version gnutls_x509_crt_get_version
349#define fn_gnutls_x509_crt_get_serial gnutls_x509_crt_get_serial
350#define fn_gnutls_x509_crt_get_issuer_dn gnutls_x509_crt_get_issuer_dn
351#define fn_gnutls_x509_crt_get_activation_time gnutls_x509_crt_get_activation_time 355#define fn_gnutls_x509_crt_get_activation_time gnutls_x509_crt_get_activation_time
352#define fn_gnutls_x509_crt_get_expiration_time gnutls_x509_crt_get_expiration_time
353#define fn_gnutls_x509_crt_get_dn gnutls_x509_crt_get_dn 356#define fn_gnutls_x509_crt_get_dn gnutls_x509_crt_get_dn
354#define fn_gnutls_x509_crt_get_pk_algorithm gnutls_x509_crt_get_pk_algorithm 357#define fn_gnutls_x509_crt_get_expiration_time gnutls_x509_crt_get_expiration_time
355#define fn_gnutls_pk_algorithm_get_name gnutls_pk_algorithm_get_name 358#define fn_gnutls_x509_crt_get_fingerprint gnutls_x509_crt_get_fingerprint
356#define fn_gnutls_pk_bits_to_sec_param gnutls_pk_bits_to_sec_param 359#define fn_gnutls_x509_crt_get_issuer_dn gnutls_x509_crt_get_issuer_dn
357#define fn_gnutls_x509_crt_get_issuer_unique_id gnutls_x509_crt_get_issuer_unique_id 360#define fn_gnutls_x509_crt_get_issuer_unique_id gnutls_x509_crt_get_issuer_unique_id
358#define fn_gnutls_x509_crt_get_subject_unique_id gnutls_x509_crt_get_subject_unique_id
359#define fn_gnutls_x509_crt_get_signature_algorithm gnutls_x509_crt_get_signature_algorithm
360#define fn_gnutls_x509_crt_get_signature gnutls_x509_crt_get_signature
361#define fn_gnutls_x509_crt_get_key_id gnutls_x509_crt_get_key_id 361#define fn_gnutls_x509_crt_get_key_id gnutls_x509_crt_get_key_id
362#define fn_gnutls_sec_param_get_name gnutls_sec_param_get_name 362#define fn_gnutls_x509_crt_get_pk_algorithm gnutls_x509_crt_get_pk_algorithm
363#define fn_gnutls_sign_get_name gnutls_sign_get_name 363#define fn_gnutls_x509_crt_get_serial gnutls_x509_crt_get_serial
364#define fn_gnutls_server_name_set gnutls_server_name_set 364#define fn_gnutls_x509_crt_get_signature_algorithm gnutls_x509_crt_get_signature_algorithm
365#define fn_gnutls_kx_get gnutls_kx_get 365#define fn_gnutls_x509_crt_get_subject_unique_id gnutls_x509_crt_get_subject_unique_id
366#define fn_gnutls_kx_get_name gnutls_kx_get_name 366#define fn_gnutls_x509_crt_get_version gnutls_x509_crt_get_version
367#define fn_gnutls_protocol_get_version gnutls_protocol_get_version 367#define fn_gnutls_x509_crt_import gnutls_x509_crt_import
368#define fn_gnutls_protocol_get_name gnutls_protocol_get_name 368#define fn_gnutls_x509_crt_init gnutls_x509_crt_init
369#define fn_gnutls_cipher_get gnutls_cipher_get
370#define fn_gnutls_cipher_get_name gnutls_cipher_get_name
371#define fn_gnutls_mac_get gnutls_mac_get
372#define fn_gnutls_mac_get_name gnutls_mac_get_name
373 369
374#endif /* !WINDOWSNT */ 370#endif /* !WINDOWSNT */
375 371
376 372
377#ifdef HAVE_GNUTLS3 373#ifdef HAVE_GNUTLS3
378/* Function to log a simple audit message. */ 374/* Log a simple audit message. */
379static void 375static void
380gnutls_audit_log_function (gnutls_session_t session, const char *string) 376gnutls_audit_log_function (gnutls_session_t session, const char *string)
381{ 377{
@@ -386,21 +382,21 @@ gnutls_audit_log_function (gnutls_session_t session, const char *string)
386} 382}
387#endif 383#endif
388 384
389/* Function to log a simple message. */ 385/* Log a simple message. */
390static void 386static void
391gnutls_log_function (int level, const char *string) 387gnutls_log_function (int level, const char *string)
392{ 388{
393 message ("gnutls.c: [%d] %s", level, string); 389 message ("gnutls.c: [%d] %s", level, string);
394} 390}
395 391
396/* Function to log a message and a string. */ 392/* Log a message and a string. */
397static void 393static void
398gnutls_log_function2 (int level, const char *string, const char *extra) 394gnutls_log_function2 (int level, const char *string, const char *extra)
399{ 395{
400 message ("gnutls.c: [%d] %s %s", level, string, extra); 396 message ("gnutls.c: [%d] %s %s", level, string, extra);
401} 397}
402 398
403/* Function to log a message and an integer. */ 399/* Log a message and an integer. */
404static void 400static void
405gnutls_log_function2i (int level, const char *string, int extra) 401gnutls_log_function2i (int level, const char *string, int extra)
406{ 402{
@@ -804,21 +800,21 @@ DEFUN ("gnutls-available-p", Fgnutls_available_p, Sgnutls_available_p, 0, 0, 0,
804} 800}
805 801
806static Lisp_Object 802static Lisp_Object
807gnutls_hex_string (char *buf, size_t buf_size, const char *prefix) 803gnutls_hex_string (unsigned char *buf, ptrdiff_t buf_size, const char *prefix)
808{ 804{
809 size_t prefix_length = strlen (prefix); 805 ptrdiff_t prefix_length = strlen (prefix);
810 char *string = malloc (buf_size * 3 + prefix_length); 806 if ((STRING_BYTES_BOUND - prefix_length) / 3 < buf_size)
811 Lisp_Object ret; 807 string_overflow ();
812 808 Lisp_Object ret = make_uninit_string (prefix_length + 3 * buf_size
809 - (buf_size != 0));
810 char *string = SSDATA (ret);
813 strcpy (string, prefix); 811 strcpy (string, prefix);
814 812
815 for (int i = 0; i < buf_size; i++) 813 for (ptrdiff_t i = 0; i < buf_size; i++)
816 sprintf (string + i * 3 + prefix_length, 814 sprintf (string + i * 3 + prefix_length,
817 i == buf_size - 1 ? "%02x" : "%02x:", 815 i == buf_size - 1 ? "%02x" : "%02x:",
818 ((unsigned char*) buf)[i]); 816 buf[i]);
819 817
820 ret = build_string (string);
821 free (string);
822 return ret; 818 return ret;
823} 819}
824 820
@@ -842,12 +838,12 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
842 err = fn_gnutls_x509_crt_get_serial (cert, NULL, &buf_size); 838 err = fn_gnutls_x509_crt_get_serial (cert, NULL, &buf_size);
843 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 839 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
844 { 840 {
845 char *serial = malloc (buf_size); 841 void *serial = xmalloc (buf_size);
846 err = fn_gnutls_x509_crt_get_serial (cert, serial, &buf_size); 842 err = fn_gnutls_x509_crt_get_serial (cert, serial, &buf_size);
847 if (err >= GNUTLS_E_SUCCESS) 843 if (err >= GNUTLS_E_SUCCESS)
848 res = nconc2 (res, list2 (intern (":serial-number"), 844 res = nconc2 (res, list2 (intern (":serial-number"),
849 gnutls_hex_string (serial, buf_size, ""))); 845 gnutls_hex_string (serial, buf_size, "")));
850 free (serial); 846 xfree (serial);
851 } 847 }
852 848
853 /* Issuer. */ 849 /* Issuer. */
@@ -855,28 +851,27 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
855 err = fn_gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size); 851 err = fn_gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size);
856 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 852 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
857 { 853 {
858 char *dn = malloc (buf_size); 854 char *dn = xmalloc (buf_size);
859 err = fn_gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size); 855 err = fn_gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size);
860 if (err >= GNUTLS_E_SUCCESS) 856 if (err >= GNUTLS_E_SUCCESS)
861 res = nconc2 (res, list2 (intern (":issuer"), 857 res = nconc2 (res, list2 (intern (":issuer"),
862 make_string (dn, buf_size))); 858 make_string (dn, buf_size)));
863 free (dn); 859 xfree (dn);
864 } 860 }
865 861
866 /* Validity. */ 862 /* Validity. */
867 { 863 {
868 char buf[11]; 864 /* Add 1 to the buffer size, since 1900 is added to tm_year and
869 size_t buf_size = sizeof (buf); 865 that might add 1 to the year length. */
866 char buf[INT_STRLEN_BOUND (int) + 1 + sizeof "-12-31"];
870 struct tm t; 867 struct tm t;
871 time_t tim = fn_gnutls_x509_crt_get_activation_time (cert); 868 time_t tim = fn_gnutls_x509_crt_get_activation_time (cert);
872 869
873 if (gmtime_r (&tim, &t) != NULL && 870 if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
874 strftime (buf, buf_size, "%Y-%m-%d", &t) != 0)
875 res = nconc2 (res, list2 (intern (":valid-from"), build_string (buf))); 871 res = nconc2 (res, list2 (intern (":valid-from"), build_string (buf)));
876 872
877 tim = fn_gnutls_x509_crt_get_expiration_time (cert); 873 tim = fn_gnutls_x509_crt_get_expiration_time (cert);
878 if (gmtime_r (&tim, &t) != NULL && 874 if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
879 strftime (buf, buf_size, "%Y-%m-%d", &t) != 0)
880 res = nconc2 (res, list2 (intern (":valid-to"), build_string (buf))); 875 res = nconc2 (res, list2 (intern (":valid-to"), build_string (buf)));
881 } 876 }
882 877
@@ -885,12 +880,12 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
885 err = fn_gnutls_x509_crt_get_dn (cert, NULL, &buf_size); 880 err = fn_gnutls_x509_crt_get_dn (cert, NULL, &buf_size);
886 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 881 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
887 { 882 {
888 char *dn = malloc (buf_size); 883 char *dn = xmalloc (buf_size);
889 err = fn_gnutls_x509_crt_get_dn (cert, dn, &buf_size); 884 err = fn_gnutls_x509_crt_get_dn (cert, dn, &buf_size);
890 if (err >= GNUTLS_E_SUCCESS) 885 if (err >= GNUTLS_E_SUCCESS)
891 res = nconc2 (res, list2 (intern (":subject"), 886 res = nconc2 (res, list2 (intern (":subject"),
892 make_string (dn, buf_size))); 887 make_string (dn, buf_size)));
893 free (dn); 888 xfree (dn);
894 } 889 }
895 890
896 /* Versions older than 2.11 doesn't have these four functions. */ 891 /* Versions older than 2.11 doesn't have these four functions. */
@@ -919,24 +914,24 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
919 err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size); 914 err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size);
920 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 915 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
921 { 916 {
922 char *buf = malloc (buf_size); 917 char *buf = xmalloc (buf_size);
923 err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size); 918 err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size);
924 if (err >= GNUTLS_E_SUCCESS) 919 if (err >= GNUTLS_E_SUCCESS)
925 res = nconc2 (res, list2 (intern (":issuer-unique-id"), 920 res = nconc2 (res, list2 (intern (":issuer-unique-id"),
926 make_string (buf, buf_size))); 921 make_string (buf, buf_size)));
927 free (buf); 922 xfree (buf);
928 } 923 }
929 924
930 buf_size = 0; 925 buf_size = 0;
931 err = fn_gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size); 926 err = fn_gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size);
932 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 927 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
933 { 928 {
934 char *buf = malloc (buf_size); 929 char *buf = xmalloc (buf_size);
935 err = fn_gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size); 930 err = fn_gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size);
936 if (err >= GNUTLS_E_SUCCESS) 931 if (err >= GNUTLS_E_SUCCESS)
937 res = nconc2 (res, list2 (intern (":subject-unique-id"), 932 res = nconc2 (res, list2 (intern (":subject-unique-id"),
938 make_string (buf, buf_size))); 933 make_string (buf, buf_size)));
939 free (buf); 934 xfree (buf);
940 } 935 }
941#endif 936#endif
942 937
@@ -955,13 +950,12 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
955 err = fn_gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size); 950 err = fn_gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size);
956 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 951 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
957 { 952 {
958 unsigned char *buf = malloc (buf_size); 953 void *buf = xmalloc (buf_size);
959 err = fn_gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size); 954 err = fn_gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size);
960 if (err >= GNUTLS_E_SUCCESS) 955 if (err >= GNUTLS_E_SUCCESS)
961 res = nconc2 (res, list2 (intern (":public-key-id"), 956 res = nconc2 (res, list2 (intern (":public-key-id"),
962 gnutls_hex_string ((char *)buf, 957 gnutls_hex_string (buf, buf_size, "sha1:")));
963 buf_size, "sha1:"))); 958 xfree (buf);
964 free (buf);
965 } 959 }
966 960
967 /* Certificate fingerprint. */ 961 /* Certificate fingerprint. */
@@ -970,21 +964,20 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
970 NULL, &buf_size); 964 NULL, &buf_size);
971 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) 965 if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
972 { 966 {
973 unsigned char *buf = malloc (buf_size); 967 void *buf = xmalloc (buf_size);
974 err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1, 968 err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
975 buf, &buf_size); 969 buf, &buf_size);
976 if (err >= GNUTLS_E_SUCCESS) 970 if (err >= GNUTLS_E_SUCCESS)
977 res = nconc2 (res, list2 (intern (":certificate-id"), 971 res = nconc2 (res, list2 (intern (":certificate-id"),
978 gnutls_hex_string ((char *)buf, 972 gnutls_hex_string (buf, buf_size, "sha1:")));
979 buf_size, "sha1:"))); 973 xfree (buf);
980 free (buf);
981 } 974 }
982 975
983 return res; 976 return res;
984} 977}
985 978
986DEFUN ("gnutls-peer-status-warning-describe", Fgnutls_peer_status_warning_describe, Sgnutls_peer_status_warning_describe, 1, 1, 0, 979DEFUN ("gnutls-peer-status-warning-describe", Fgnutls_peer_status_warning_describe, Sgnutls_peer_status_warning_describe, 1, 1, 0,
987 doc: /* Describe the warning of a GnuTLS peer status from `gnutls-peer-status'.*/) 980 doc: /* Describe the warning of a GnuTLS peer status from `gnutls-peer-status'. */)
988 (Lisp_Object status_symbol) 981 (Lisp_Object status_symbol)
989{ 982{
990 CHECK_SYMBOL (status_symbol); 983 CHECK_SYMBOL (status_symbol);
@@ -1109,9 +1102,9 @@ The return value is a property list with top-level keys :warnings and
1109} 1102}
1110 1103
1111 1104
1112/* Initializes global GnuTLS state to defaults. 1105/* Initialize global GnuTLS state to defaults.
1113Call `gnutls-global-deinit' when GnuTLS usage is no longer needed. 1106 Call `gnutls-global-deinit' when GnuTLS usage is no longer needed.
1114Returns zero on success. */ 1107 Return zero on success. */
1115static Lisp_Object 1108static Lisp_Object
1116emacs_gnutls_global_init (void) 1109emacs_gnutls_global_init (void)
1117{ 1110{
@@ -1141,8 +1134,8 @@ gnutls_ip_address_p (char *string)
1141} 1134}
1142 1135
1143#if 0 1136#if 0
1144/* Deinitializes global GnuTLS state. 1137/* Deinitialize global GnuTLS state.
1145See also `gnutls-global-init'. */ 1138 See also `gnutls-global-init'. */
1146static Lisp_Object 1139static Lisp_Object
1147emacs_gnutls_global_deinit (void) 1140emacs_gnutls_global_deinit (void)
1148{ 1141{
@@ -1282,7 +1275,7 @@ one trustfile (usually a CA bundle). */)
1282 1275
1283 GNUTLS_LOG2 (1, max_log_level, "connecting to host:", c_hostname); 1276 GNUTLS_LOG2 (1, max_log_level, "connecting to host:", c_hostname);
1284 1277
1285 /* always initialize globals. */ 1278 /* Always initialize globals. */
1286 global_init = emacs_gnutls_global_init (); 1279 global_init = emacs_gnutls_global_init ();
1287 if (! NILP (Fgnutls_errorp (global_init))) 1280 if (! NILP (Fgnutls_errorp (global_init)))
1288 return global_init; 1281 return global_init;