Fixing one of my own bugs, there since SSLeay days I belive :-) If a short PEM encoded sequence is passed to the BIO, and the file has 2 \n following, it will fail. openssl asn1parse -in f2.bad where f2.bad = <<EOF -----BEGIN PARAMETERS----- MA0GByqGSM49AQECAgD/ -----END PARAMETERS-----
EOF The patch is diff --git a/crypto/evp/bio_b64.c b/crypto/evp/bio_b64.c index 72a2a67..ac6d441 100644 --- a/crypto/evp/bio_b64.c +++ b/crypto/evp/bio_b64.c @@ -264,7 +264,7 @@ static int b64_read(BIO *b, char *out, int outl) } /* we fell off the end without starting */ - if (j == i) + if ((j == i) && (num == 0)) { /* Is this is one long chunk?, if so, keep on * reading until a new line. */ Attached is a tar of working/failing cases
bio_b64-bug.tar.gz
Description: application/compressed-tar