x509parse_crt() now better handles PEM error situations

Because of new pem_read_buffer() handling of when it writes use_len,
x509parse_crt() is able to better handle situations where a PEM blob
results in an error but the other blobs can still be parsed.
(cherry picked from commit 6417186365f4a73a719fff754fefe8edcef2bc28)

Conflicts:
	ChangeLog
diff --git a/ChangeLog b/ChangeLog
index 5618789..4e9fb7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
 Changes
    * HAVEGE random generator disabled by default
 
+Bugfix
+   * x509parse_crt() now better handles PEM error situations
+
 = Version 1.1.6 released on 2013-03-11
 Bugfix
    * Fixed net_bind() for specified IP addresses on little endian systems
diff --git a/library/x509parse.c b/library/x509parse.c
index 7fd1672..42ddd70 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -1349,10 +1349,20 @@
                 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;