Make sure there are no OpenSSL errors logged for key_import() autodetect 20/75820/2
authorLukasz Pawelczyk <l.pawelczyk@samsung.com>
Tue, 21 Jun 2016 13:57:21 +0000 (15:57 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Thu, 23 Jun 2016 09:53:52 +0000 (02:53 -0700)
Change-Id: I850db9d0316bbd5883797195c8358e6aef91297c

src/debug.c
src/key.c

index 66ece0e..6babb5f 100644 (file)
@@ -125,6 +125,7 @@ int error_handle(const char *file, int line, const char *function)
        case ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_PKEY_CTX_CTRL, EVP_R_COMMAND_NOT_SUPPORTED):
        case ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_READ_BIO, PEM_R_NO_START_LINE):
        case ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_CHECK_TLEN, ASN1_R_WRONG_TAG):
+       case ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_D2I_READ_BIO, ASN1_R_NOT_ENOUGH_DATA):
                ret = YACA_ERROR_INVALID_PARAMETER;
                break;
        case ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_DECRYPTFINAL_EX, EVP_R_BAD_DECRYPT):
index 3a70534..a368488 100644 (file)
--- a/src/key.c
+++ b/src/key.c
@@ -301,9 +301,11 @@ int import_evp(yaca_key_h *key,
                        X509 *x509 = PEM_read_bio_X509(src, NULL, cb, (void*)password);
                        if (ERROR_HANDLE() == YACA_ERROR_INVALID_PASSWORD)
                                wrong_pass = true;
-                       if (x509 != NULL)
+                       if (x509 != NULL) {
                                pkey = X509_get_pubkey(x509);
-                       X509_free(x509);
+                               X509_free(x509);
+                               ERROR_CLEAR();
+                       }
                        private = false;
                }
        }