summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2007-12-10 23:02:07 +0100
committerSimon Josefsson <simon@josefsson.org>2007-12-10 23:02:07 +0100
commit8227192be4bbe562344fd1e5b7fb7059f8429a2e (patch)
tree95e0b0e75af2def8f7b61a2b52c94b332759d4fb
parent5a63e0b2cd4608c4f79e1840e33490cb6a52f6e9 (diff)
downloadgnutls-8227192be4bbe562344fd1e5b7fb7059f8429a2e.tar.gz
Make --verify-chain support larger inputs than 64kb.
-rw-r--r--src/certtool.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/certtool.c b/src/certtool.c
index 3426936464..56b71dec84 100644
--- a/src/certtool.c
+++ b/src/certtool.c
@@ -1528,7 +1528,9 @@ _verify_x509_mem (const void *cert, int cert_size)
error (EXIT_FAILURE, 0, "memory error");
tmp.data = (char *) ptr;
- tmp.size = siz;
+ tmp.size = cert_size;
+ tmp.size -=
+ (unsigned int) ((unsigned char *) ptr - (unsigned char *) cert);
ret = gnutls_x509_crl_init (&x509_crl_list[i - 1]);
if (ret < 0)
@@ -1568,8 +1570,11 @@ _verify_x509_mem (const void *cert, int cert_size)
if (x509_cert_list == NULL)
error (EXIT_FAILURE, 0, "memory error");
+
tmp.data = (char *) ptr;
- tmp.size = siz;
+ tmp.size = cert_size;
+ tmp.size -=
+ (unsigned int) ((unsigned char *) ptr - (unsigned char *) cert);
ret = gnutls_x509_crt_init (&x509_cert_list[i - 1]);
if (ret < 0)
@@ -1774,9 +1779,13 @@ print_verification_res (gnutls_x509_crt_t crt,
void
verify_chain (void)
{
+ char *buffer;
size_t size;
- size = fread (buffer, 1, sizeof (buffer) - 1, infile);
+ buffer = fread_file (infile, &size);
+ if (buffer == NULL)
+ error (EXIT_FAILURE, errno, "reading chain");
+
buffer[size] = 0;
_verify_x509_mem (buffer, size);