diff options
author | Tilo Eckert <tilo.eckert@flam.de> | 2019-02-18 15:53:32 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-02-21 10:51:17 +0100 |
commit | 7caf6d2ab62dc2ac964808cedae48d75c4156ddd (patch) | |
tree | 015890919897763bb32b8b0187039b18f56d9245 /include | |
parent | 5a590dfb5f0c0593dee7d138b8e8ee42ab093406 (diff) | |
download | libssh-7caf6d2ab62dc2ac964808cedae48d75c4156ddd.tar.gz libssh-7caf6d2ab62dc2ac964808cedae48d75c4156ddd.tar.xz libssh-7caf6d2ab62dc2ac964808cedae48d75c4156ddd.zip |
buffer: Fix regression introduced by 6c7eaa and c306a6
Buffer (un)packing was broken on compilers that are not
gcc-compatible since the checks for an argument count of
-1 have been removed from ssh_buffer_(un)pack(). This
fix no longer uses GCC extensions for the __VA_NARG__
macro, but only plain C99.
Note: The macro can no longer count empty argument lists
(results in compile error) which was not needed anyway.
Signed-off-by: Tilo Eckert <tilo.eckert@flam.de>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libssh/priv.h | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h index 8f1cd84c..7dcbcd49 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -328,7 +328,6 @@ void explicit_bzero(void *s, size_t n); /** * Get the argument cound of variadic arguments */ -#ifdef HAVE_GCC_NARG_MACRO /* * Since MSVC 2010 there is a bug in passing __VA_ARGS__ to subsequent * macros as a single token, which results in: @@ -338,7 +337,7 @@ void explicit_bzero(void *s, size_t n); #define VA_APPLY_VARIADIC_MACRO(macro, tuple) macro tuple #define __VA_NARG__(...) \ - (__VA_NARG_(_0, ## __VA_ARGS__, __RSEQ_N()) - 1) + (__VA_NARG_(__VA_ARGS__, __RSEQ_N())) #define __VA_NARG_(...) \ VA_APPLY_VARIADIC_MACRO(__VA_ARG_N, (__VA_ARGS__)) #define __VA_ARG_N( \ @@ -357,10 +356,6 @@ void explicit_bzero(void *s, size_t n); 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, \ 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 -#else -/* clang does not support the above construction */ -#define __VA_NARG__(...) (-1) -#endif #define CLOSE_SOCKET(s) do { if ((s) != SSH_INVALID_SOCKET) { _XCLOSESOCKET(s); (s) = SSH_INVALID_SOCKET;} } while(0) |