[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] [emacs] 01/01: (gnutls_hex_string): New utility function.
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] [emacs] 01/01: (gnutls_hex_string): New utility function. |
Date: |
Tue, 18 Nov 2014 00:57:04 +0000 |
branch: nsm
commit 7b5f7f628a806cc40d29af484c64bcacc68bc018
Author: Lars Magne Ingebrigtsen <address@hidden>
Date: Tue Nov 18 01:56:56 2014 +0100
(gnutls_hex_string): New utility function.
Also free some unfreed objects
---
src/ChangeLog | 1 +
src/gnutls.c | 40 +++++++++++++++++++++-------------------
2 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/src/ChangeLog b/src/ChangeLog
index b1244cd..d1e082a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,6 +1,7 @@
2014-11-18 Lars Magne Ingebrigtsen <address@hidden>
* gnutls.c (gnutls_certificate_details): New function.
+ (gnutls_hex_string): New utility function.
2014-11-17 Lars Magne Ingebrigtsen <address@hidden>
diff --git a/src/gnutls.c b/src/gnutls.c
index 9d2338a..234027c 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -706,6 +706,15 @@ DEFUN ("gnutls-available-p", Fgnutls_available_p,
Sgnutls_available_p, 0, 0, 0,
#endif
}
+Lisp_Object
+gnutls_hex_string (unsigned char *buf, size_t buf_size) {
+ Lisp_Object string = make_uninit_string (buf_size * 3 - 1);
+ for (int i = 0; i < buf_size; i++)
+ sprintf (SDATA (string) + i * 3,
+ i == buf_size - 1? "%02x": "%02x:",
+ buf[i]);
+ return string;
+}
Lisp_Object
gnutls_certificate_details (gnutls_x509_crt_t cert)
@@ -727,14 +736,9 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
size_t serial_size = sizeof (serial);
err = gnutls_x509_crt_get_serial (cert, serial, &serial_size);
- if (err >= GNUTLS_E_SUCCESS) {
- Lisp_Object ser = make_uninit_string (serial_size * 3 - 1);
- for (int i = 0; i < serial_size; i++)
- sprintf (SDATA (ser) + i * 3,
- i == serial_size - 1? "%02x": "%02x:",
- serial[i]);
- res = nconc2 (res, list2 (intern (":serial-number"), ser));
- }
+ if (err >= GNUTLS_E_SUCCESS)
+ res = nconc2 (res, list2 (intern (":serial-number"),
+ gnutls_hex_string (serial, serial_size)));
}
/* Issuer. */
@@ -742,14 +746,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
size_t dn_size = 0;
err = gnutls_x509_crt_get_issuer_dn (cert, NULL, &dn_size);
- if (err >= GNUTLS_E_SUCCESS) {
+ if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) {
char *dn = malloc (dn_size);
err = gnutls_x509_crt_get_issuer_dn (cert, dn, &dn_size);
- if (err >= GNUTLS_E_SUCCESS) {
+ if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":issuer"),
make_string (dn, dn_size)));
- free (dn);
- }
+ free (dn);
}
}
@@ -767,14 +770,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
size_t dn_size = 0;
err = gnutls_x509_crt_get_dn (cert, NULL, &dn_size);
- if (err >= GNUTLS_E_SUCCESS) {
+ if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) {
char *dn = malloc (dn_size);
err = gnutls_x509_crt_get_dn (cert, dn, &dn_size);
- if (err >= GNUTLS_E_SUCCESS) {
+ if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":subject"),
make_string (dn, dn_size)));
- free (dn);
- }
+ free (dn);
}
}
@@ -825,14 +827,14 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
build_string (name)));
err = gnutls_x509_crt_get_signature (cert, NULL, &buf_size);
- if (err >= GNUTLS_E_SUCCESS) {
+ if (err == GNUTLS_E_SHORT_MEMORY_BUFFER) {
char *buf = malloc (buf_size);
err = gnutls_x509_crt_get_signature (cert, buf, &buf_size);
if (err >= GNUTLS_E_SUCCESS) {
res = nconc2 (res, list2 (intern (":signature"),
- make_string (buf, buf_size)));
- free (buf);
+ gnutls_hex_string (buf, buf_size)));
}
+ free (buf);
}
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] [emacs] 01/01: (gnutls_hex_string): New utility function.,
Lars Ingebrigtsen <=