From ca392ac658005ed4fb3529806ad69a00f1c0984c Mon Sep 17 00:00:00 2001 From: Maciej Urbanski Date: Mon, 12 Feb 2018 01:08:54 +0100 Subject: [PATCH] allow empty DOCKER_DOMAIN_SUFFIX --- m4/arg_with_define_string.m4 | 2 +- src/libnss_docker.c | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/m4/arg_with_define_string.m4 b/m4/arg_with_define_string.m4 index 8a302f3..3e81de8 100644 --- a/m4/arg_with_define_string.m4 +++ b/m4/arg_with_define_string.m4 @@ -12,7 +12,7 @@ AC_DEFUN([ACX_ARG_WITH_DEFINE_STRING], [ AC_MSG_CHECKING([$2]) AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1=$3], [$2])]) - AS_VAR_IF(AS_TR_SH([with_$1]), [], [ + AS_VAR_SET_IF(AS_TR_SH([with_$1]), [], [ AC_CACHE_VAL(AS_TR_SH([acx_cv_arg_with_$1]), [ AS_VAR_SET(AS_TR_SH([acx_cv_arg_with_$1]), [$3])]) AS_VAR_COPY(AS_TR_SH([with_$1]), AS_TR_SH([acx_cv_arg_with_$1]))]) diff --git a/src/libnss_docker.c b/src/libnss_docker.c index 5902005..739fd46 100644 --- a/src/libnss_docker.c +++ b/src/libnss_docker.c @@ -76,9 +76,6 @@ enum nss_status _nss_docker_gethostbyname3_r( /* hostname is name without domain suffix */ char hostname[256]; - /* docker domain suffix starts here */ - char *hostname_suffix_ptr; - /* address of Docker API server */ struct sockaddr_un docker_api_addr; @@ -162,18 +159,23 @@ enum nss_status _nss_docker_gethostbyname3_r( strncpy(hostname, name, sizeof(hostname)); hostname[name_len] = '\0'; - /* Handle only .docker domain */ - if ((hostname_suffix_ptr = strstr(hostname, DOCKER_DOMAIN_SUFFIX)) == NULL) { - *errnop = EADDRNOTAVAIL; - goto return_unavail; - } + /* Handle only domains ending with DOCKER_DOMAIN_SUFFIX */ + if (sizeof(DOCKER_DOMAIN_SUFFIX)) { + /* docker domain suffix starts here */ + char *hostname_suffix_ptr = strstr(hostname, DOCKER_DOMAIN_SUFFIX); - if (hostname_suffix_ptr[sizeof(DOCKER_DOMAIN_SUFFIX) - 1] != '\0') { - *errnop = EADDRNOTAVAIL; - goto return_unavail; - } + if (hostname_suffix_ptr == NULL) { + *errnop = EADDRNOTAVAIL; + goto return_unavail; + } - *hostname_suffix_ptr = '\0'; + if (hostname_suffix_ptr[sizeof(DOCKER_DOMAIN_SUFFIX) - 1] != '\0') { + *errnop = EADDRNOTAVAIL; + goto return_unavail; + } + + *hostname_suffix_ptr = '\0'; + } /* Connect to Docker API socket */ memset((char *) &docker_api_addr, 0, sizeof(docker_api_addr));