Commit 23eb74e0 authored by Yang Tse's avatar Yang Tse
Browse files

make CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR

 and CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
internal to CHECK_FUNC_GETADDRINFO
parent 9c860972
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -554,8 +554,6 @@ CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL

CARES_CHECK_FUNC_GETADDRINFO
CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
CARES_CHECK_FUNC_GETHOSTNAME
CARES_CHECK_FUNC_GETSERVBYPORT_R
CARES_CHECK_FUNC_INET_NTOP
+132 −134
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
#***************************************************************************

# File version for 'aclocal' use. Keep it a single number.
# serial 13
# serial 14


dnl CARES_INCLUDES_ARPA_INET
@@ -243,6 +243,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
  AC_REQUIRE([CARES_INCLUDES_STDLIB])dnl
  AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
  AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
  AC_REQUIRE([CARES_INCLUDES_STRING])dnl
  #
  tst_links_getaddrinfo="unknown"
  tst_proto_getaddrinfo="unknown"
@@ -363,20 +364,22 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
    AC_MSG_RESULT([no])
    ac_cv_func_getaddrinfo="no"
  fi
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
    DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
    DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
  fi
])


dnl CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
dnl DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
dnl -------------------------------------------------
dnl verify if the ai_addr pointer member of the addrinfo
dnl struct returned by function getaddrinfo is a pointer
dnl which can actually be free()ed or not.
dnl which can actually be free()ed or not. This is an
dnl internal macro used by CARES_CHECK_FUNC_GETADDRINFO

AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
  AC_REQUIRE([CARES_CHECK_FUNC_GETADDRINFO])dnl
  AC_REQUIRE([CARES_INCLUDES_STRING])dnl
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
AC_DEFUN([DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
  AC_MSG_CHECKING([if getaddrinfo returns unfreeable ai_addr])
  dnl only do runtime verification when not cross-compiling
  if test "x$cross_compiling" != "xyes"; then
@@ -406,8 +409,8 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
        memset(&tmp_addr, 1, sizeof(tmp_addr));
        /* attempt to free ai_addr pointer */
        freed_ptr = ai_addr = ai->ai_addr;
          /* seg-fault free'ing an unfreeable ptr would be    */
          /* nice, if this happen exit code will be non-zero. */
        /* seg-faulting when free'ing an unfreeable ptr would be nice    */
        /* and desired here, if this happens exit code will be non-zero. */
        free(ai_addr);
        /* attempt to write free'ed memory */
        freed_ptr->sa_family = 'x';
@@ -415,7 +418,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
        ai_addr = calloc(1, sizeof(struct sockaddr));
        /* attempt to read free'ed memory */
        tmp_addr = *freed_ptr;
          /* verify if everithing has worked */
        /* verify if everything has worked */
        if(tmp_addr.sa_family == 'x')
          /* ai_addr might be unfreeable, ouch! */
          exit(1);
@@ -436,21 +439,17 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
    dnl for cross-compiling a static check would be nice.
    AC_MSG_RESULT([unknown])
  fi
  fi
])


dnl CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
dnl DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
dnl -------------------------------------------------
dnl verify if the ai_canonname pointer member of the addrinfo
dnl struct returned by function getaddrinfo is a pointer
dnl which can actually be free()ed or not.
dnl which can actually be free()ed or not. This is an
dnl internal macro used by CARES_CHECK_FUNC_GETADDRINFO

AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
  AC_REQUIRE([CARES_CHECK_FUNC_GETADDRINFO])dnl
  AC_REQUIRE([CARES_INCLUDES_STRING])dnl
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
AC_DEFUN([DO_CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
  AC_MSG_CHECKING([if getaddrinfo returns unfreeable ai_canonname])
  dnl only do runtime verification when not cross-compiling
  if test "x$cross_compiling" != "xyes"; then
@@ -481,8 +480,8 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
        memset(&tmp_canonname, 1, sizeof(tmp_canonname));
        /* attempt to free ai_canonname pointer */
        freed_ptr = ai_canonname = ai->ai_canonname;
          /* seg-fault free'ing an unfreeable ptr would be    */
          /* nice, if this happen exit code will be non-zero. */
        /* seg-faulting when free'ing an unfreeable ptr would be nice    */
        /* and desired here, if this happens exit code will be non-zero. */
        free(ai_canonname);
        /* attempt to write free'ed memory */
        freed_ptr[0] = 'x';
@@ -490,7 +489,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
        ai_canonname = calloc(1, sizeof(tmp_canonname));
        /* attempt to read free'ed memory */
        tmp_canonname[0] = freed_ptr[0];
          /* verify if everithing has worked */
        /* verify if everything has worked */
        if(tmp_canonname[0] == 'x')
          /* ai_canonname might be unfreeable, ouch! */
          exit(1);
@@ -502,7 +501,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
      dnl exit code was zero, getaddrinfo behaves nicely.
      AC_MSG_RESULT([no])
    ],[
        dnl exit code wasn't zero, getaddrinfo returns unfreeable ptr.
      dnl exit code wasn't zero, getaddrinfo returns unfreeable member ptr.
      AC_MSG_RESULT([yes])
      AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_UNFREEABLE_AI_CANONNAME, 1,
        [Define to 1 if getaddrinfo returns unfreeable ai_canonname pointer.])
@@ -511,7 +510,6 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
    dnl for cross-compiling a static check would be nice.
    AC_MSG_RESULT([unknown])
  fi
  fi
])


+0 −2
Original line number Diff line number Diff line
@@ -2017,8 +2017,6 @@ CURL_CHECK_FUNC_ALARM
CURL_CHECK_FUNC_FDOPEN
CURL_CHECK_FUNC_FTRUNCATE
CURL_CHECK_FUNC_GETADDRINFO
CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
CURL_CHECK_FUNC_GETHOSTBYADDR_R
CURL_CHECK_FUNC_GETHOSTBYNAME_R
CURL_CHECK_FUNC_GETHOSTNAME
+132 −134
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
#***************************************************************************

# File version for 'aclocal' use. Keep it a single number.
# serial 29
# serial 30


dnl CURL_INCLUDES_ARPA_INET
@@ -596,6 +596,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
  AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  tst_links_getaddrinfo="unknown"
  tst_proto_getaddrinfo="unknown"
@@ -716,20 +717,22 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
    AC_MSG_RESULT([no])
    ac_cv_func_getaddrinfo="no"
  fi
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
    DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
    DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
  fi
])


dnl CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
dnl DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR
dnl -------------------------------------------------
dnl verify if the ai_addr pointer member of the addrinfo
dnl struct returned by function getaddrinfo is a pointer
dnl which can actually be free()ed or not.
dnl which can actually be free()ed or not. This is an
dnl internal macro used by CURL_CHECK_FUNC_GETADDRINFO

AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
  AC_REQUIRE([CURL_CHECK_FUNC_GETADDRINFO])dnl
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
AC_DEFUN([DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
  AC_MSG_CHECKING([if getaddrinfo returns unfreeable ai_addr])
  dnl only do runtime verification when not cross-compiling
  if test "x$cross_compiling" != "xyes"; then
@@ -759,8 +762,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
        memset(&tmp_addr, 1, sizeof(tmp_addr));
        /* attempt to free ai_addr pointer */
        freed_ptr = ai_addr = ai->ai_addr;
          /* seg-fault free'ing an unfreeable ptr would be    */
          /* nice, if this happen exit code will be non-zero. */
        /* seg-faulting when free'ing an unfreeable ptr would be nice    */
        /* and desired here, if this happens exit code will be non-zero. */
        free(ai_addr);
        /* attempt to write free'ed memory */
        freed_ptr->sa_family = 'x';
@@ -768,7 +771,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
        ai_addr = calloc(1, sizeof(struct sockaddr));
        /* attempt to read free'ed memory */
        tmp_addr = *freed_ptr;
          /* verify if everithing has worked */
        /* verify if everything has worked */
        if(tmp_addr.sa_family == 'x')
          /* ai_addr might be unfreeable, ouch! */
          exit(1);
@@ -780,7 +783,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
      dnl exit code was zero, getaddrinfo behaves nicely.
      AC_MSG_RESULT([no])
    ],[
        dnl exit code wasn't zero, getaddrinfo returns unfreeable ptr.
      dnl exit code wasn't zero, getaddrinfo returns unfreeable member ptr.
      AC_MSG_RESULT([yes])
      AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_UNFREEABLE_AI_ADDR, 1,
        [Define to 1 if getaddrinfo returns unfreeable ai_addr pointer.])
@@ -789,21 +792,17 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR], [
    dnl for cross-compiling a static check would be nice.
    AC_MSG_RESULT([unknown])
  fi
  fi
])


dnl CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
dnl DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME
dnl -------------------------------------------------
dnl verify if the ai_canonname pointer member of the addrinfo
dnl struct returned by function getaddrinfo is a pointer
dnl which can actually be free()ed or not.
dnl which can actually be free()ed or not. This is an
dnl internal macro used by CURL_CHECK_FUNC_GETADDRINFO

AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
  AC_REQUIRE([CURL_CHECK_FUNC_GETADDRINFO])dnl
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  if test "$ac_cv_func_getaddrinfo" = "yes"; then
AC_DEFUN([DO_CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
  AC_MSG_CHECKING([if getaddrinfo returns unfreeable ai_canonname])
  dnl only do runtime verification when not cross-compiling
  if test "x$cross_compiling" != "xyes"; then
@@ -834,8 +833,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
        memset(&tmp_canonname, 1, sizeof(tmp_canonname));
        /* attempt to free ai_canonname pointer */
        freed_ptr = ai_canonname = ai->ai_canonname;
          /* seg-fault free'ing an unfreeable ptr would be    */
          /* nice, if this happen exit code will be non-zero. */
        /* seg-faulting when free'ing an unfreeable ptr would be nice    */
        /* and desired here, if this happens exit code will be non-zero. */
        free(ai_canonname);
        /* attempt to write free'ed memory */
        freed_ptr[0] = 'x';
@@ -843,7 +842,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
        ai_canonname = calloc(1, sizeof(tmp_canonname));
        /* attempt to read free'ed memory */
        tmp_canonname[0] = freed_ptr[0];
          /* verify if everithing has worked */
        /* verify if everything has worked */
        if(tmp_canonname[0] == 'x')
          /* ai_canonname might be unfreeable, ouch! */
          exit(1);
@@ -855,7 +854,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
      dnl exit code was zero, getaddrinfo behaves nicely.
      AC_MSG_RESULT([no])
    ],[
        dnl exit code wasn't zero, getaddrinfo returns unfreeable ptr.
      dnl exit code wasn't zero, getaddrinfo returns unfreeable member ptr.
      AC_MSG_RESULT([yes])
      AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_UNFREEABLE_AI_CANONNAME, 1,
        [Define to 1 if getaddrinfo returns unfreeable ai_canonname pointer.])
@@ -864,7 +863,6 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME], [
    dnl for cross-compiling a static check would be nice.
    AC_MSG_RESULT([unknown])
  fi
  fi
])