]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
certtool: simplified certificate PEM printing
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Fri, 18 Aug 2017 09:16:50 +0000 (11:16 +0200)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Fri, 18 Aug 2017 09:56:30 +0000 (11:56 +0200)
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
src/common.c

index acf56fb228bada00812782d599476c6b9746c7b8..931703ae21e705d477b24f780c1d87e7657c7e4d 100644 (file)
@@ -198,37 +198,22 @@ print_x509_info(gnutls_session_t session, FILE *out, int flag, int print_cert)
                }
 
                if (print_cert) {
-                       size_t size = 0;
-                       char *p = NULL;
+                       gnutls_datum_t pem;
 
                        ret =
-                           gnutls_x509_crt_export(crt,
-                                                  GNUTLS_X509_FMT_PEM, p,
-                                                  &size);
-                       if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) {
-                               p = malloc(size + 1);
-                               if (!p) {
-                                       fprintf(stderr, "gnutls_malloc\n");
-                                       exit(1);
-                               }
-
-                               ret =
-                                   gnutls_x509_crt_export(crt,
-                                                          GNUTLS_X509_FMT_PEM,
-                                                          p, &size);
-                       }
+                           gnutls_x509_crt_export2(crt,
+                                                  GNUTLS_X509_FMT_PEM, &pem);
                        if (ret < 0) {
                                fprintf(stderr, "Encoding error: %s\n",
                                        gnutls_strerror(ret));
                                return;
                        }
 
-                       p[size] = 0;
                        fputs("\n", out);
-                       fputs(p, out);
+                       fputs((char*)pem.data, out);
                        fputs("\n", out);
 
-                       gnutls_free(p);
+                       gnutls_free(pem.data);
                }
 
                gnutls_x509_crt_deinit(crt);