From 177b92df2b054895f75e3cdd00d68b91a47a243f Mon Sep 17 00:00:00 2001 From: Jack Lau Date: Sun, 15 Jun 2025 23:15:45 +0800 Subject: [PATCH] avformat/tls_openssl: fix warnings when openssl is lower version api doc: https://docs.openssl.org/1.0.2/man3/BIO_s_mem In higher versions (openssl 1.0.2 and higher), the function signature is BIO *BIO_new_mem_buf(const void *buf, int len), so passing a const string doesn't cause an warnings. However, in lower versions of OpenSSL, the function signature becomes BIO *BIO_new_mem_buf(void *buf, int len), which leads to warnings. OpenSSL guarantees that it will not modify the string, so it's safe to cast the pem_str to (void *) to avoid this warning. Signed-off-by: Jack Lau Signed-off-by: Zhao Zhili --- libavformat/tls_openssl.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c index 86e8935fee..2a3905891d 100644 --- a/libavformat/tls_openssl.c +++ b/libavformat/tls_openssl.c @@ -415,7 +415,11 @@ error: */ static EVP_PKEY *pkey_from_pem_string(const char *pem_str, int is_priv) { +#if OPENSSL_VERSION_NUMBER < 0x10002000L /* OpenSSL 1.0.2 */ + BIO *mem = BIO_new_mem_buf((void *)pem_str, -1); +#else BIO *mem = BIO_new_mem_buf(pem_str, -1); +#endif if (!mem) { av_log(NULL, AV_LOG_ERROR, "BIO_new_mem_buf failed\n"); return NULL; @@ -445,7 +449,11 @@ static EVP_PKEY *pkey_from_pem_string(const char *pem_str, int is_priv) */ static X509 *cert_from_pem_string(const char *pem_str) { +#if OPENSSL_VERSION_NUMBER < 0x10002000L /* OpenSSL 1.0.2 */ + BIO *mem = BIO_new_mem_buf((void *)pem_str, -1); +#else BIO *mem = BIO_new_mem_buf(pem_str, -1); +#endif if (!mem) { av_log(NULL, AV_LOG_ERROR, "BIO_new_mem_buf failed\n"); return NULL;