Skip to content

Commit c82c346

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)
1 parent 34e4a96 commit c82c346

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.1.0h and 1.1.1 [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
*) Apply blinding to binary field modular inversion and remove patent
1317
pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation.
1418
[Billy Bob Brumley]

crypto/pem/pem_lib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
430430
keylen = PEM_def_callback(buf, PEM_BUFSIZE, 0, u);
431431
else
432432
keylen = callback(buf, PEM_BUFSIZE, 0, u);
433-
if (keylen <= 0) {
433+
if (keylen < 0) {
434434
PEMerr(PEM_F_PEM_DO_HEADER, PEM_R_BAD_PASSWORD_READ);
435435
return 0;
436436
}

crypto/pem/pem_pk8.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
124124
klen = cb(psbuf, PEM_BUFSIZE, 0, u);
125125
else
126126
klen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
127-
if (klen <= 0) {
127+
if (klen < 0) {
128128
PEMerr(PEM_F_D2I_PKCS8PRIVATEKEY_BIO, PEM_R_BAD_PASSWORD_READ);
129129
X509_SIG_free(p8);
130130
return NULL;

crypto/pem/pem_pkey.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
6060
klen = cb(psbuf, PEM_BUFSIZE, 0, u);
6161
else
6262
klen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
63-
if (klen <= 0) {
63+
if (klen < 0) {
6464
PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY, PEM_R_BAD_PASSWORD_READ);
6565
X509_SIG_free(p8);
6666
goto err;

crypto/pem/pvkfmt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ static EVP_PKEY *do_PVK_body(const unsigned char **in,
686686
inlen = cb(psbuf, PEM_BUFSIZE, 0, u);
687687
else
688688
inlen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u);
689-
if (inlen <= 0) {
689+
if (inlen < 0) {
690690
PEMerr(PEM_F_DO_PVK_BODY, PEM_R_BAD_PASSWORD_READ);
691691
goto err;
692692
}

0 commit comments

Comments
 (0)