From: Nikos Mavrogiannopoulos Date: Wed, 26 Aug 2015 09:51:09 +0000 (+0200) Subject: x509: tolerate missing subject or issuer fields X-Git-Tag: gnutls_3_5_0~704 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fa6ae763ef67c139451f4f812fbafb2aad04fd9;p=thirdparty%2Fgnutls.git x509: tolerate missing subject or issuer fields --- diff --git a/lib/x509/output.c b/lib/x509/output.c index b4d6777c27..b24200d7cb 100644 --- a/lib/x509/output.c +++ b/lib/x509/output.c @@ -1249,10 +1249,13 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, int err; err = gnutls_x509_crt_get_issuer_dn(cert, NULL, &dn_size); - if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, "error: get_issuer_dn: %s\n", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("\tIssuer:\n")); + else + addf(str, "error: get_issuer_dn: %s\n", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "error: malloc (%d): %s\n", @@ -1324,10 +1327,13 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, int err; err = gnutls_x509_crt_get_dn(cert, NULL, &dn_size); - if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, "error: get_dn: %s\n", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("\tSubject:\n")); + else + addf(str, "error: get_dn: %s\n", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "error: malloc (%d): %s\n", @@ -1506,10 +1512,13 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) size_t dn_size = 0; err = gnutls_x509_crt_get_dn(cert, NULL, &dn_size); - if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, "unknown subject (%s), ", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("no subject,")); + else + addf(str, "unknown subject (%s), ", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "unknown subject (%s), ", @@ -1535,10 +1544,13 @@ static void print_oneline(gnutls_buffer_st * str, 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_SHORT_MEMORY_BUFFER) - addf(str, "unknown issuer (%s), ", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("no issuer,")); + else + addf(str, "unknown issuer (%s), ", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "unknown issuer (%s), ", @@ -1753,10 +1765,13 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) int err; err = gnutls_x509_crl_get_issuer_dn(crl, NULL, &dn_size); - if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, "error: get_issuer_dn: %s\n", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("\tIssuer:\n")); + else + addf(str, "error: get_issuer_dn: %s\n", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "error: malloc (%d): %s\n", @@ -2121,10 +2136,13 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, int err; err = gnutls_x509_crq_get_dn(cert, NULL, &dn_size); - if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, "error: get_dn: %s\n", - gnutls_strerror(err)); - else { + if (err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + addf(str, _("\tSubject:\n")); + else + addf(str, "error: get_dn: %s\n", + gnutls_strerror(err)); + } else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "error: malloc (%d): %s\n",