diff --git a/ChangeLog b/ChangeLog index 53a6095f2..59be48bee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ Bugfix supports secure renegotiation * Fixed offset for cert_type list in ssl_parse_certificate_request() * Fixed const correctness issues that have no impact on the ABI + * x509parse_crt() now better handles PEM error situations = Version 1.2.7 released 2013-04-13 Features diff --git a/library/x509parse.c b/library/x509parse.c index 2541eeca3..35f272986 100644 --- a/library/x509parse.c +++ b/library/x509parse.c @@ -1463,10 +1463,20 @@ int x509parse_crt( x509_cert *chain, const unsigned char *buf, size_t buflen ) buflen -= use_len; buf += use_len; } + else if( ret == POLARSSL_ERR_PEM_BAD_INPUT_DATA ) + { + return( ret ); + } else if( ret != POLARSSL_ERR_PEM_NO_HEADER_FOOTER_PRESENT ) { pem_free( &pem ); + /* + * PEM header and footer were found + */ + buflen -= use_len; + buf += use_len; + if( first_error == 0 ) first_error = ret;