Skip to content

Commit 18026c0

Browse files
committed
In cases where we ask PEM_def_callback for minimum 0 length, accept 0 length
Fixes #4716 Reviewed-by: Rich Salz <[email protected]> (Merged from #6173) (cherry picked from commit c82c346)
1 parent 0602a14 commit 18026c0

5 files changed

Lines changed: 8 additions & 4 deletions

File tree

CHANGES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99

1010
Changes between 1.0.2o and 1.0.2p [xx XXX xxxx]
1111

12+
*) When unlocking a pass phrase protected PEM file or PKCS#8 container, we
13+
now allow empty (zero character) pass phrases.
14+
[Richard Levitte]
15+
1216
*) Certificate time validation (X509_cmp_time) enforces stricter
1317
compliance with RFC 5280. Fractional seconds and timezone offsets
1418
are no longer allowed.

crypto/pem/pem_lib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
447447
klen = PEM_def_callback(buf, PEM_BUFSIZE, 0, u);
448448
else
449449
klen = callback(buf, PEM_BUFSIZE, 0, u);
450-
if (klen <= 0) {
450+
if (klen < 0) {
451451
PEMerr(PEM_F_PEM_DO_HEADER, PEM_R_BAD_PASSWORD_READ);
452452
return (0);
453453
}

crypto/pem/pem_pk8.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
171171
klen = cb(psbuf, PEM_BUFSIZE, 0, u);
172172
else
173173
klen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
174-
if (klen <= 0) {
174+
if (klen < 0) {
175175
PEMerr(PEM_F_D2I_PKCS8PRIVATEKEY_BIO, PEM_R_BAD_PASSWORD_READ);
176176
X509_SIG_free(p8);
177177
return NULL;

crypto/pem/pem_pkey.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
113113
klen = cb(psbuf, PEM_BUFSIZE, 0, u);
114114
else
115115
klen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
116-
if (klen <= 0) {
116+
if (klen < 0) {
117117
PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY, PEM_R_BAD_PASSWORD_READ);
118118
X509_SIG_free(p8);
119119
goto err;

crypto/pem/pvkfmt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ static EVP_PKEY *do_PVK_body(const unsigned char **in,
702702
inlen = cb(psbuf, PEM_BUFSIZE, 0, u);
703703
else
704704
inlen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
705-
if (inlen <= 0) {
705+
if (inlen < 0) {
706706
PEMerr(PEM_F_DO_PVK_BODY, PEM_R_BAD_PASSWORD_READ);
707707
goto err;
708708
}

0 commit comments

Comments
 (0)