[openssh-commits] [openssh] 01/01: Move VA_COPY macro into compat header.

git+noreply at mindrot.org git+noreply at mindrot.org
Fri Jul 15 14:54:27 AEST 2016


This is an automated email from the git hooks/post-receive script.

dtucker pushed a commit to branch master
in repository openssh.

commit 5abfb15ced985c340359ae7fb65a625ed3692b3e
Author: Darren Tucker <dtucker at zip.com.au>
Date:   Fri Jul 15 14:48:30 2016 +1000

    Move VA_COPY macro into compat header.
    
    Some AIX compilers unconditionally undefine va_copy but don't set it back
    to an internal function, causing link errors.  In some compat code we
    already use VA_COPY instead so move the two existing instances into the
    shared header and use for sshbuf-getput-basic.c too.  Should fix building
    with at lease some versions of AIX's compiler.  bz#2589, ok djm@
---
 openbsd-compat/bsd-asprintf.c   | 12 ------------
 openbsd-compat/bsd-snprintf.c   | 12 ------------
 openbsd-compat/openbsd-compat.h | 17 +++++++++++++++++
 sshbuf-getput-basic.c           |  4 ++--
 4 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/openbsd-compat/bsd-asprintf.c b/openbsd-compat/bsd-asprintf.c
index 3368195..7b83448 100644
--- a/openbsd-compat/bsd-asprintf.c
+++ b/openbsd-compat/bsd-asprintf.c
@@ -25,18 +25,6 @@
 #include <stdarg.h>
 #include <stdlib.h>
 
-#ifndef VA_COPY
-# ifdef HAVE_VA_COPY
-#  define VA_COPY(dest, src) va_copy(dest, src)
-# else
-#  ifdef HAVE___VA_COPY
-#   define VA_COPY(dest, src) __va_copy(dest, src)
-#  else
-#   define VA_COPY(dest, src) (dest) = (src)
-#  endif
-# endif
-#endif
-
 #define INIT_SZ	128
 
 int
diff --git a/openbsd-compat/bsd-snprintf.c b/openbsd-compat/bsd-snprintf.c
index 23a6359..d95b6a4 100644
--- a/openbsd-compat/bsd-snprintf.c
+++ b/openbsd-compat/bsd-snprintf.c
@@ -99,18 +99,6 @@
 # undef HAVE_VSNPRINTF
 #endif
 
-#ifndef VA_COPY
-# ifdef HAVE_VA_COPY
-#  define VA_COPY(dest, src) va_copy(dest, src)
-# else
-#  ifdef HAVE___VA_COPY
-#   define VA_COPY(dest, src) __va_copy(dest, src)
-#  else
-#   define VA_COPY(dest, src) (dest) = (src)
-#  endif
-# endif
-#endif
-
 #if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
 
 #include <ctype.h>
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 997541e..37d2064 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -253,6 +253,23 @@ int mbtowc(wchar_t *, const char*, size_t);
 # include <stdarg.h>
 #endif
 
+/*
+ * Some platforms unconditionally undefine va_copy() so we define VA_COPY()
+ * instead.  This is known to be the case on at least some configurations of
+ * AIX with the xlc compiler.
+ */
+#ifndef VA_COPY
+# ifdef HAVE_VA_COPY
+#  define VA_COPY(dest, src) va_copy(dest, src)
+# else
+#  ifdef HAVE___VA_COPY
+#   define VA_COPY(dest, src) __va_copy(dest, src)
+#  else
+#   define VA_COPY(dest, src) (dest) = (src)
+#  endif
+# endif
+#endif
+
 #ifndef HAVE_VASPRINTF
 int vasprintf(char **, const char *, va_list);
 #endif
diff --git a/sshbuf-getput-basic.c b/sshbuf-getput-basic.c
index ad21ae5..74c49be 100644
--- a/sshbuf-getput-basic.c
+++ b/sshbuf-getput-basic.c
@@ -270,7 +270,7 @@ sshbuf_putfv(struct sshbuf *buf, const char *fmt, va_list ap)
 	int r, len;
 	u_char *p;
 
-	va_copy(ap2, ap);
+	VA_COPY(ap2, ap);
 	if ((len = vsnprintf(NULL, 0, fmt, ap2)) < 0) {
 		r = SSH_ERR_INVALID_ARGUMENT;
 		goto out;
@@ -280,7 +280,7 @@ sshbuf_putfv(struct sshbuf *buf, const char *fmt, va_list ap)
 		goto out; /* Nothing to do */
 	}
 	va_end(ap2);
-	va_copy(ap2, ap);
+	VA_COPY(ap2, ap);
 	if ((r = sshbuf_reserve(buf, (size_t)len + 1, &p)) < 0)
 		goto out;
 	if ((r = vsnprintf((char *)p, len + 1, fmt, ap2)) != len) {

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list