From bf8d139b2d8baa9864a3e54d4275b39be450a2f7 Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Mon, 13 Jul 2009 12:32:06 +0200 Subject: [PATCH] Enable conditional compiling for IP regex code. --- ConfigureChecks.cmake | 1 + config.h.cmake | 3 +++ libssh/connect.c | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 0b1629ef..14abf096 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -34,6 +34,7 @@ else (WIN32) check_function_exists(gethostbyname HAVE_GETHOSTBYNAME) check_function_exists(poll HAVE_POLL) check_function_exists(select HAVE_SELECT) + check_function_exists(regcomp HAVE_REGCOMP) endif (WIN32) # LIBRARIES diff --git a/config.h.cmake b/config.h.cmake index e941d109..e86f6926 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -46,6 +46,9 @@ /* Define to 1 if you have the `select' function. */ #cmakedefine HAVE_SELECT 1 +/* Define to 1 if you have the `regcomp' function. */ +#cmakedefine HAVE_REGCOMP 1 + /*************************** LIBRARIES ***************************/ /* Define to 1 if you have the `crypto' library (-lcrypto). */ diff --git a/libssh/connect.c b/libssh/connect.c index 2a7e82c6..52c48c86 100644 --- a/libssh/connect.c +++ b/libssh/connect.c @@ -56,12 +56,13 @@ #error "Your system must have getaddrinfo()" #endif +#ifdef HAVE_REGCOMP /* don't declare gnu extended regexp's */ #ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE #endif #include - +#endif /* HAVE_REGCOMP */ #ifdef _WIN32 static void sock_set_nonblocking(socket_t sock) { @@ -94,7 +95,7 @@ static void sock_set_blocking(socket_t sock) { } #endif /* _WIN32 */ - +#ifdef HAVE_REGCOMP static regex_t *ip_regex = NULL; /** @internal @@ -130,6 +131,14 @@ void ssh_regex_finalize(){ } } +#else /* HAVE_REGCOMP */ +int ssh_regex_init(){ + return 0; +} +void ssh_regex_finalize(){ +} +#endif + static int getai(SSH_SESSION *session, const char *host, int port, struct addrinfo **ai) { const char *service = NULL; struct addrinfo hints; @@ -148,11 +157,13 @@ static int getai(SSH_SESSION *session, const char *host, int port, struct addrin service = s_port; hints.ai_flags=AI_NUMERICSERV; } +#ifdef HAVE_REGCOMP if(regexec(ip_regex,host,0,NULL,0) == 0){ /* this is an IP address */ ssh_log(session,SSH_LOG_PACKET,"host %s matches an IP address",host); hints.ai_flags |= AI_NUMERICHOST; } +#endif return getaddrinfo(host, service, &hints, ai); }