diff options
author | Simon Josefsson <simon@josefsson.org> | 2004-08-22 13:54:09 +0000 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2004-08-22 13:54:09 +0000 |
commit | 0891fa9d33db78c8bf635a37730fcda4fcd45e96 (patch) | |
tree | 6adcadca6b2a19166e6d7ac710eaf2eb24240117 | |
parent | 26b78cc56e96bacc2f3ca246a0ba862da0eced5f (diff) | |
download | gnutls-0891fa9d33db78c8bf635a37730fcda4fcd45e96.tar.gz |
(print_certificate_info): Don't crash on large X.509 extensions
(thanks to PKITS test suite). Also output ASCII representation of
printable extension data (some extension contain humanly readable
strings).
-rw-r--r-- | src/certtool.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/certtool.c b/src/certtool.c index 8d312af799..d95f425df5 100644 --- a/src/certtool.c +++ b/src/certtool.c @@ -28,6 +28,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <ctype.h> #include <gnutls/x509.h> #include <time.h> #include "certtool-gaa.h" @@ -1229,13 +1230,19 @@ static void print_certificate_info(gnutls_x509_crt crt, FILE * out, else fprintf(out, "\n"); - print = printable; + fprintf(out, "\t\tDER Data: "); for (j = 0; j < size; j++) { - sprintf(print, "%.2x", (unsigned char) buffer[j]); - print += 2; + fprintf(out, "%.2x", (unsigned char) buffer[j]); } - fprintf(out, "\t\tDER Data: %s\n", printable); - + fprintf(out, "\n"); + fprintf(out, "\t\tASCII: "); + for (j = 0; j < size; j++) { + if (isprint (buffer[j])) + fprintf(out, "%c", (unsigned char) buffer[j]); + else + fprintf(out, "."); + } + fprintf(out, "\n"); } ret = 0; |