Commit 7d342c72 authored by U-D5B1PQ1J\Administrador's avatar U-D5B1PQ1J\Administrador
Browse files

build: allow NTLM tests to run on more build configurations

parent 5c2b6b2d
Loading
Loading
Loading
Loading
+45 −16
Original line number Diff line number Diff line
@@ -21,32 +21,61 @@
 ***************************************************************************/

#include "setup.h"
#include "curl_gethostname.h"

#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
#  include <unistd.h>
#endif

#include "curl_gethostname.h"

/*
 * Curl_gethostname() is a wrapper around gethostname() which allows
 * overriding the host name that the function would normally return.
 * This capability is used by the test suite to verify exact matching
 * of NTLM authentication, which exercises libcurl's MD4 and DES code.
 *
 * For libcurl debug enabled builds host name overriding takes place
 * when environment variable CURL_GETHOSTNAME is set, using the value
 * held by the variable to override returned host name.
 *
 * For libcurl shared library release builds the test suite preloads
 * another shared library named libhostname using the LD_PRELOAD
 * mechanism which intercepts, and might override, the gethostname()
 * function call. In this case a given platform must support the
 * LD_PRELOAD mechanism and additionally have environment variable
 * CURL_GETHOSTNAME set in order to override the returned host name.
 *
 * For libcurl static library release builds no overriding takes place.
 */

int Curl_gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen) {

#define GETHOSTNAME_ENV_VAR "CURL_GETHOSTNAME"
#ifndef HAVE_GETHOSTNAME

int Curl_gethostname(char *name, size_t namelen) {
#ifdef HAVE_GETHOSTNAME
  /* Allow compilation and return failure when unavailable */
  (void) name;
  (void) namelen;
  return -1;

#ifdef CURLDEBUG
  /* we check the environment variable only in case of debug build */
  const char *force_hostname = getenv(GETHOSTNAME_ENV_VAR);
#else

#ifdef DEBUGBUILD

  /* Override host name when environment variable CURL_GETHOSTNAME is set */
  const char *force_hostname = getenv("CURL_GETHOSTNAME");
  if(force_hostname) {
    strncpy(name, force_hostname, namelen);
    name[namelen-1] = '\0';
    return 0;
  }
#endif
  /* no override requested */

#endif /* DEBUGBUILD */

  /* The call to system's gethostname() might get intercepted by the
     libhostname library when libcurl is built as a non-debug shared
     library when running the test suite. */
  return gethostname(name, namelen);

#else
  /* no gethostname() available on system, we should always fail */
  (void) name;
  (void) namelen;
  return -1;
#endif

}
+1 −8
Original line number Diff line number Diff line
@@ -22,13 +22,6 @@
 *
 ***************************************************************************/

#include "setup.h"

/* wrapper around gethostname(), which makes it possible to override the
 * returned value during testing.  It reads the value of CURL_GETHOSTNAME
 * environment variable when built with --enable-curldebug.  The function always
 * returns -1, if gethostname() is not available on system.
 */
int Curl_gethostname(char *name, size_t namelen);
int Curl_gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen);

#endif /* HEADER_CURL_GETHOSTNAME_H */
+12 −0
Original line number Diff line number Diff line
@@ -356,6 +356,18 @@
#  endif
#endif

/*
 * Arg 2 type for gethostname in case it hasn't been defined in config file.
 */

#ifndef GETHOSTNAME_TYPE_ARG2
#  ifdef USE_WINSOCK
#    define GETHOSTNAME_TYPE_ARG2 int
#  else
#    define GETHOSTNAME_TYPE_ARG2 size_t
#  endif
#endif

/* Below we define some functions. They should

   4. set the SIGALRM signal timeout
+2 −2
Original line number Diff line number Diff line
#include "curl_gethostname.h"
#include "setup.h"

#include <stdio.h>
#include "curl_gethostname.h"

#define HOSTNAME_MAX 1024

+6 −11
Original line number Diff line number Diff line
@@ -7,25 +7,20 @@
 *
 */

#include <stdlib.h>
#include <string.h>

#define GETHOSTNAME_ENV_VAR "CURL_GETHOSTNAME"
#include "setup.h"

/*
 * we force our own host name, in order to make some tests machine independent
 *
 * Since some systems think this prototype doesn't match the system provided
 * function, we AVOID including unistd.h or other headers that may include the
 * original prototype! We provide our own instead (to avoid warnings).
 */
int gethostname(char *name, size_t namelen);

int gethostname(char *name, size_t namelen)
int gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen);

int gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen)
{
  const char *force_hostname = getenv(GETHOSTNAME_ENV_VAR);
  const char *force_hostname = getenv("CURL_GETHOSTNAME");
  if(force_hostname) {
    strncpy(name, force_hostname, namelen);
    name[namelen-1] = '\0';
    return 0;
  }

Loading