Call for testing: OpenSSH 6.8

Darren Tucker
Fri, 27 Feb 2015 18:12:28 -0000

On Fri, Feb 27, 2015 at 7:12 AM, Michael Felt <aixtools at gmail.com>
wrote:
>
> ld: 0711-317 ERROR: Undefined symbol: .va_copy
> ld: 0711-317 ERROR: Undefined symbol: .EC_KEY_free
>

Which object files contain references to those symbols?  (running each
through "nm" should show you).


> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
> information.
>
> The error above is a bit unusual.
> 1) It has been seen before that with -qlanglvl=extc89 that va_copy is not
> found. This is clear, I think, from the stdarg.h file:
>
>    +88  #ifdef _ISOC99_SOURCE
>    +89  #define va_copy(__list1,__list2) ((void)(__list1 = __list2))
>    +90  #endif
>    +91
>    +92  #endif /* _ANSI_C_SOURCE */
>

There's a definition of va_copy in defines.h which should be activated when
the platform doesn't have it:

#ifndef HAVE_VA_COPY
# ifdef HAVE___VA_COPY
#  define va_copy(dest, src) __va_copy(dest, src)
# else
#  define va_copy(dest, src) (dest) = (src)
# endif
#endif

I suspect there's a file which should have includes.h at the top but
doesn't.

I think the EC_KEY_free should be fixed by this:

diff --git a/kex.c b/kex.c
index 2618e22..cf04574 100644
--- a/kex.c
+++ b/kex.c
@@ -432,8 +432,10 @@ kex_free(struct kex *kex)
 #ifdef WITH_OPENSSL
        if (kex->dh)
                DH_free(kex->dh);
+# ifdef OPENSSL_HAS_ECC
        if (kex->ec_client_key)
                EC_KEY_free(kex->ec_client_key);

I should be able to reproduce the problem by building against the exact
openssl version you have.

--
Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4  37C9 C982 80C7 8FF4 FA69
    Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.