The branch main has been updated by jhb:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=e8633bc76ad935fa44156034713c608477bc3da0

commit e8633bc76ad935fa44156034713c608477bc3da0
Author:     John Baldwin <j...@freebsd.org>
AuthorDate: 2025-08-08 17:43:56 +0000
Commit:     John Baldwin <j...@freebsd.org>
CommitDate: 2025-08-08 17:43:56 +0000

    openssh: Don't include an unused EVP_CIPHER_CTX_get_iv() stub
    
    This stub isn't actually used on modern versions of OpenSSL for which
    OpenSSH uses EVP_CIPHER_CTX_get_updated_iv instead via a wrapper macro.
    
    However, the wrapper macro conflicted with the existing namespace
    macro triggering an error on GCC:
    
    In file included from crypto/openssh/sshd-session.c:65:
    crypto/openssh/openbsd-compat/openssl-compat.h:71:11: error: 
"EVP_CIPHER_CTX_get_iv" redefined [-Werror]
       71 | #  define EVP_CIPHER_CTX_get_iv EVP_CIPHER_CTX_get_updated_iv
          |           ^~~~~~~~~~~~~~~~~~~~~
    In file included from <command-line>:
    crypto/openssh/ssh_namespace.h:12:9: note: this is the location of the 
previous definition
       12 | #define EVP_CIPHER_CTX_get_iv                   
Fssh_EVP_CIPHER_CTX_get_iv
          |         ^~~~~~~~~~~~~~~~~~~~~
    
    The error was masked on clang due to MIT krb5 adding a blanket
    -Wno-macro-redefined.  Building sshd-session without Kerberos support
    was sufficient to trigger a warning from clang.
    
    Reviewed by:    des
    Differential Revision:  https://reviews.freebsd.org/D51810
---
 crypto/openssh/openbsd-compat/libressl-api-compat.c | 8 +++++---
 crypto/openssh/ssh_namespace.h                      | 1 -
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/crypto/openssh/openbsd-compat/libressl-api-compat.c 
b/crypto/openssh/openbsd-compat/libressl-api-compat.c
index 59be17397c56..2381df57ac2b 100644
--- a/crypto/openssh/openbsd-compat/libressl-api-compat.c
+++ b/crypto/openssh/openbsd-compat/libressl-api-compat.c
@@ -26,6 +26,7 @@
 #include <openssl/evp.h>
 
 #ifndef HAVE_EVP_CIPHER_CTX_GET_IV
+# ifndef HAVE_EVP_CIPHER_CTX_GET_UPDATED_IV
 int
 EVP_CIPHER_CTX_get_iv(const EVP_CIPHER_CTX *ctx, unsigned char *iv, size_t len)
 {
@@ -44,14 +45,15 @@ EVP_CIPHER_CTX_get_iv(const EVP_CIPHER_CTX *ctx, unsigned 
char *iv, size_t len)
        if (len != 0) {
                if (iv == NULL)
                        return 0;
-# ifdef HAVE_EVP_CIPHER_CTX_IV
+#  ifdef HAVE_EVP_CIPHER_CTX_IV
                memcpy(iv, EVP_CIPHER_CTX_iv(ctx), len);
-# else
+#  else
                memcpy(iv, ctx->iv, len);
-# endif /* HAVE_EVP_CIPHER_CTX_IV */
+#  endif /* HAVE_EVP_CIPHER_CTX_IV */
        }
        return 1;
 }
+# endif /* HAVE_EVP_CIPHER_CTX_GET_UPDATED_IV */
 #endif /* HAVE_EVP_CIPHER_CTX_GET_IV */
 
 #ifndef HAVE_EVP_CIPHER_CTX_SET_IV
diff --git a/crypto/openssh/ssh_namespace.h b/crypto/openssh/ssh_namespace.h
index 2b8cc8cabe5b..371303bb55f2 100644
--- a/crypto/openssh/ssh_namespace.h
+++ b/crypto/openssh/ssh_namespace.h
@@ -9,7 +9,6 @@
 #define Blowfish_initstate                     Fssh_Blowfish_initstate
 #define Blowfish_stream2word                   Fssh_Blowfish_stream2word
 #define Decode                                 Fssh_Decode
-#define EVP_CIPHER_CTX_get_iv                  Fssh_EVP_CIPHER_CTX_get_iv
 #define EVP_CIPHER_CTX_set_iv                  Fssh_EVP_CIPHER_CTX_set_iv
 #define Encode                                 Fssh_Encode
 #define Hide                                   Fssh_Hide

Reply via email to