diff --git a/src/ssl.c b/src/ssl.c index 521afb811..39d80ef2a 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -25406,6 +25406,10 @@ static WOLFSSL_X509* d2i_X509orX509REQ_bio(WOLFSSL_BIO* bio, size = wolfSSL_BIO_get_len(bio); if (size <= 0) { WOLFSSL_MSG("wolfSSL_BIO_get_len error. Possibly no pending data."); +#if defined(OPENSSL_ALL) && defined(WOLFSSL_PYTHON) + /* EOF ASN1 file */ + WOLFSSL_ERROR(ASN1_R_HEADER_TOO_LONG); +#endif return NULL; } @@ -26836,6 +26840,8 @@ int wolfSSL_ERR_GET_LIB(unsigned long err) case EVP_R_DECODE_ERROR: case EVP_R_PRIVATE_KEY_DECODE_ERROR: return ERR_LIB_EVP; + case ASN1_R_HEADER_TOO_LONG: + return ERR_LIB_ASN1; default: return 0; } @@ -26859,6 +26865,10 @@ int wolfSSL_ERR_GET_REASON(unsigned long err) if (err == ((ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE)) return PEM_R_NO_START_LINE; #endif +#if defined(OPENSLL_ALL) && defined(WOLFSSL_PYTHON) + if (err == ((ERR_LIB_ASN1 << 24) | ASN1_R_HEADER_TOO_LONG)) + return ASN1_R_HEADER_TOO_LONG; +#endif /* check if error value is in range of wolfSSL errors */ ret = 0 - ret; /* setting as negative value */ @@ -44150,6 +44160,11 @@ unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line) #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) if (ret == -ASN_NO_PEM_HEADER) return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE; + #endif + #if defined(OPENSLL_ALL) && defined(WOLFSSL_PYTHON) + if (ret == ASN1_R_HEADER_TOO_LONG) { + return (ERR_LIB_ASN1 << 24) | ASN1_R_HEADER_TOO_LONG; + } #endif return (unsigned long)ret; } @@ -46698,6 +46713,10 @@ unsigned long wolfSSL_ERR_peek_last_error(void) } if (ret == -ASN_NO_PEM_HEADER) return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE; + #if defined(WOLFSSL_PYTHON) + if (ret == ASN1_R_HEADER_TOO_LONG) + return (ERR_LIB_ASN1 << 24) | ASN1_R_HEADER_TOO_LONG; + #endif return (unsigned long)ret; } #else diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index 02688cd55..5db30e76d 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -1334,6 +1334,7 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_ #define PEM_R_PROBLEMS_GETTING_PASSWORD (-MIN_CODE_E + 2) #define PEM_R_BAD_PASSWORD_READ (-MIN_CODE_E + 3) #define PEM_R_BAD_DECRYPT (-MIN_CODE_E + 4) +#define ASN1_R_HEADER_TOO_LONG (-MIN_CODE_E + 5) #define ERR_LIB_PEM 9 #define ERR_LIB_X509 10