From 8880cb52f7477d618d9885a14eafce299f12eace Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Thu, 12 Jun 2014 23:22:26 +0200
Subject: [PATCH] Handle missing CRL parsing gracefully
---
programs/x509/cert_app.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c
index e558da271..6023cde10 100644
--- a/programs/x509/cert_app.c
+++ b/programs/x509/cert_app.c
@@ -175,7 +175,13 @@ int main( int argc, char *argv[] )
server_fd = 0;
x509_crt_init( &cacert );
x509_crt_init( &clicert );
+#if defined(POLARSSL_X509_CRL_PARSE_C)
x509_crl_init( &cacrl );
+#else
+ /* Zeroize structure as CRL parsing is not supported and we have to pass
+ it to the verify function */
+ memset( &cacrl, 0, sizeof(x509_crl) );
+#endif
pk_init( &pkey );
if( argc == 0 )
@@ -274,17 +280,18 @@ int main( int argc, char *argv[] )
printf( " ok (%d skipped)\n", ret );
+#if defined(POLARSSL_X509_CRL_PARSE_C)
if( strlen( opt.crl_file ) )
{
- ret = x509_crl_parse_file( &cacrl, opt.crl_file );
+ if( ( ret = x509_crl_parse_file( &cacrl, opt.crl_file ) ) != 0 )
+ {
+ printf( " failed\n ! x509_crl_parse returned -0x%x\n\n", -ret );
+ goto exit;
+ }
+
verify = 1;
}
-
- if( ret < 0 )
- {
- printf( " failed\n ! x509_crl_parse returned -0x%x\n\n", -ret );
- goto exit;
- }
+#endif
if( opt.mode == MODE_FILE )
{
@@ -473,7 +480,9 @@ exit:
net_close( server_fd );
x509_crt_free( &cacert );
x509_crt_free( &clicert );
+#if defined(POLARSSL_X509_CRL_PARSE_C)
x509_crl_free( &cacrl );
+#endif
pk_free( &pkey );
entropy_free( &entropy );