|
|
- --- a/ChangeLog
- +++ b/ChangeLog
- @@ -1,3 +1,14 @@
- +Thu Jun 4 13:37:05 CEST 2015
- + Fixing memory leak in digest authentication. -AW
- +
- +Wed Jun 03 21:23:47 CEST 2015
- + Add deprecation compiler messages for deprecated functions
- + and macros. -EG
- +
- +Fri May 29 12:23:01 CEST 2015
- + Fixing digest authentication when used in combination
- + with escaped characters in URLs. -CG/AW
- +
- Wed May 13 11:49:09 CEST 2015
- Releasing libmicrohttpd 0.9.42. -CG
-
- --- a/src/microhttpd/response.c
- +++ b/src/microhttpd/response.c
- @@ -24,6 +24,8 @@
- * @author Christian Grothoff
- */
-
- +#define MHD_NO_DEPRECATION 1
- +
- #include "internal.h"
- #include "response.h"
-
- --- a/src/microhttpd/digestauth.c
- +++ b/src/microhttpd/digestauth.c
- @@ -1,6 +1,6 @@
- /*
- This file is part of libmicrohttpd
- - Copyright (C) 2010, 2011, 2012 Daniel Pittman and Christian Grothoff
- + Copyright (C) 2010, 2011, 2012, 2015 Daniel Pittman and Christian Grothoff
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- @@ -472,8 +472,8 @@ test_header (struct MHD_Connection *conn
- *
- * @param connection connections with headers to compare against
- * @param args argument URI string (after "?" in URI)
- - * @return MHD_YES if the arguments match,
- - * MHD_NO if not
- + * @return #MHD_YES if the arguments match,
- + * #MHD_NO if not
- */
- static int
- check_argument_match (struct MHD_Connection *connection,
- @@ -508,7 +508,10 @@ check_argument_match (struct MHD_Connect
- connection,
- argp);
- if (MHD_YES != test_header (connection, argp, NULL))
- - return MHD_NO;
- + {
- + free(argb);
- + return MHD_NO;
- + }
- num_headers++;
- break;
- }
- @@ -527,10 +530,16 @@ check_argument_match (struct MHD_Connect
- connection,
- equals);
- if (! test_header (connection, argp, equals))
- - return MHD_NO;
- + {
- + free(argb);
- + return MHD_NO;
- + }
- +
- num_headers++;
- argp = amper;
- }
- +
- + free(argb);
-
- /* also check that the number of headers matches */
- for (pos = connection->headers_received; NULL != pos; pos = pos->next)
- @@ -632,10 +641,83 @@ MHD_digest_auth_check (struct MHD_Connec
- header value. */
- return MHD_NO;
- }
- + /* 8 = 4 hexadecimal numbers for the timestamp */
- + nonce_time = strtoul (nonce + len - 8, (char **)NULL, 16);
- + t = (uint32_t) MHD_monotonic_time();
- + /*
- + * First level vetting for the nonce validity: if the timestamp
- + * attached to the nonce exceeds `nonce_timeout', then the nonce is
- + * invalid.
- + */
- + if ( (t > nonce_time + nonce_timeout) ||
- + (nonce_time + nonce_timeout < nonce_time) )
- + {
- + /* too old */
- + return MHD_INVALID_NONCE;
- + }
- +
- + calculate_nonce (nonce_time,
- + connection->method,
- + connection->daemon->digest_auth_random,
- + connection->daemon->digest_auth_rand_size,
- + connection->url,
- + realm,
- + noncehashexp);
- + /*
- + * Second level vetting for the nonce validity
- + * if the timestamp attached to the nonce is valid
- + * and possibly fabricated (in case of an attack)
- + * the attacker must also know the random seed to be
- + * able to generate a "sane" nonce, which if he does
- + * not, the nonce fabrication process going to be
- + * very hard to achieve.
- + */
- +
- + if (0 != strcmp (nonce, noncehashexp))
- + {
- + return MHD_INVALID_NONCE;
- + }
- + if ( (0 == lookup_sub_value (cnonce,
- + sizeof (cnonce),
- + header, "cnonce")) ||
- + (0 == lookup_sub_value (qop, sizeof (qop), header, "qop")) ||
- + ( (0 != strcmp (qop, "auth")) &&
- + (0 != strcmp (qop, "")) ) ||
- + (0 == lookup_sub_value (nc, sizeof (nc), header, "nc")) ||
- + (0 == lookup_sub_value (response, sizeof (response), header, "response")) )
- + {
- +#if HAVE_MESSAGES
- + MHD_DLOG (connection->daemon,
- + "Authentication failed, invalid format.\n");
- +#endif
- + return MHD_NO;
- + }
- + nci = strtoul (nc, &end, 16);
- + if ( ('\0' != *end) ||
- + ( (LONG_MAX == nci) &&
- + (ERANGE == errno) ) )
- + {
- +#if HAVE_MESSAGES
- + MHD_DLOG (connection->daemon,
- + "Authentication failed, invalid format.\n");
- +#endif
- + return MHD_NO; /* invalid nonce format */
- + }
- + /*
- + * Checking if that combination of nonce and nc is sound
- + * and not a replay attack attempt. Also adds the nonce
- + * to the nonce-nc map if it does not exist there.
- + */
- +
- + if (MHD_YES != check_nonce_nc (connection, nonce, nci))
- + {
- + return MHD_NO;
- + }
- +
- {
- char *uri;
- -
- - uri = malloc(left + 1);
- +
- + uri = malloc (left + 1);
- if (NULL == uri)
- {
- #if HAVE_MESSAGES
- @@ -648,24 +730,31 @@ MHD_digest_auth_check (struct MHD_Connec
- left + 1,
- header, "uri"))
- {
- - free(uri);
- + free (uri);
- return MHD_NO;
- }
-
- - /* 8 = 4 hexadecimal numbers for the timestamp */
- - nonce_time = strtoul (nonce + len - 8, (char **)NULL, 16);
- - t = (uint32_t) MHD_monotonic_time();
- - /*
- - * First level vetting for the nonce validity: if the timestamp
- - * attached to the nonce exceeds `nonce_timeout', then the nonce is
- - * invalid.
- - */
- - if ( (t > nonce_time + nonce_timeout) ||
- - (nonce_time + nonce_timeout < nonce_time) )
- - {
- - free(uri);
- - return MHD_INVALID_NONCE;
- - }
- + digest_calc_ha1("md5",
- + username,
- + realm,
- + password,
- + nonce,
- + cnonce,
- + ha1);
- + digest_calc_response (ha1,
- + nonce,
- + nc,
- + cnonce,
- + qop,
- + connection->method,
- + uri,
- + hentity,
- + respexp);
- +
- + /* Need to unescape URI before comparing with connection->url */
- + connection->daemon->unescape_callback (connection->daemon->unescape_callback_cls,
- + connection,
- + uri);
- if (0 != strncmp (uri,
- connection->url,
- strlen (connection->url)))
- @@ -674,9 +763,10 @@ MHD_digest_auth_check (struct MHD_Connec
- MHD_DLOG (connection->daemon,
- "Authentication failed, URI does not match.\n");
- #endif
- - free(uri);
- + free (uri);
- return MHD_NO;
- }
- +
- {
- const char *args = strchr (uri, '?');
-
- @@ -692,89 +782,11 @@ MHD_digest_auth_check (struct MHD_Connec
- MHD_DLOG (connection->daemon,
- "Authentication failed, arguments do not match.\n");
- #endif
- - free(uri);
- + free (uri);
- return MHD_NO;
- }
- }
- - calculate_nonce (nonce_time,
- - connection->method,
- - connection->daemon->digest_auth_random,
- - connection->daemon->digest_auth_rand_size,
- - connection->url,
- - realm,
- - noncehashexp);
- - /*
- - * Second level vetting for the nonce validity
- - * if the timestamp attached to the nonce is valid
- - * and possibly fabricated (in case of an attack)
- - * the attacker must also know the random seed to be
- - * able to generate a "sane" nonce, which if he does
- - * not, the nonce fabrication process going to be
- - * very hard to achieve.
- - */
- -
- - if (0 != strcmp (nonce, noncehashexp))
- - {
- - free(uri);
- - return MHD_INVALID_NONCE;
- - }
- - if ( (0 == lookup_sub_value (cnonce,
- - sizeof (cnonce),
- - header, "cnonce")) ||
- - (0 == lookup_sub_value (qop, sizeof (qop), header, "qop")) ||
- - ( (0 != strcmp (qop, "auth")) &&
- - (0 != strcmp (qop, "")) ) ||
- - (0 == lookup_sub_value (nc, sizeof (nc), header, "nc")) ||
- - (0 == lookup_sub_value (response, sizeof (response), header, "response")) )
- - {
- -#if HAVE_MESSAGES
- - MHD_DLOG (connection->daemon,
- - "Authentication failed, invalid format.\n");
- -#endif
- - free(uri);
- - return MHD_NO;
- - }
- - nci = strtoul (nc, &end, 16);
- - if ( ('\0' != *end) ||
- - ( (LONG_MAX == nci) &&
- - (ERANGE == errno) ) )
- - {
- -#if HAVE_MESSAGES
- - MHD_DLOG (connection->daemon,
- - "Authentication failed, invalid format.\n");
- -#endif
- - free(uri);
- - return MHD_NO; /* invalid nonce format */
- - }
- - /*
- - * Checking if that combination of nonce and nc is sound
- - * and not a replay attack attempt. Also adds the nonce
- - * to the nonce-nc map if it does not exist there.
- - */
- -
- - if (MHD_YES != check_nonce_nc (connection, nonce, nci))
- - {
- - free(uri);
- - return MHD_NO;
- - }
- -
- - digest_calc_ha1("md5",
- - username,
- - realm,
- - password,
- - nonce,
- - cnonce,
- - ha1);
- - digest_calc_response (ha1,
- - nonce,
- - nc,
- - cnonce,
- - qop,
- - connection->method,
- - uri,
- - hentity,
- - respexp);
- - free(uri);
- + free (uri);
- return (0 == strcmp(response, respexp))
- ? MHD_YES
- : MHD_NO;
- @@ -835,7 +847,7 @@ MHD_queue_auth_fail_response (struct MHD
- : "");
- {
- char *header;
- -
- +
- header = malloc(hlen + 1);
- if (NULL == header)
- {
- --- a/src/microhttpd/daemon.c
- +++ b/src/microhttpd/daemon.c
- @@ -73,7 +73,7 @@
- /**
- * Default connection limit.
- */
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- #define MHD_MAX_CONNECTIONS_DEFAULT FD_SETSIZE - 4
- #else
- #define MHD_MAX_CONNECTIONS_DEFAULT FD_SETSIZE
- @@ -1271,7 +1271,7 @@ internal_add_connection (struct MHD_Daem
- return MHD_NO;
- }
-
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- if ( (client_socket >= FD_SETSIZE) &&
- (0 == (daemon->options & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) )
- {
- @@ -1418,7 +1418,7 @@ internal_add_connection (struct MHD_Daem
- #endif
- {
- /* make socket non-blocking */
- -#if !defined(WINDOWS) || defined(CYGWIN)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- int flags = fcntl (connection->socket_fd, F_GETFL);
- if ( (-1 == flags) ||
- (0 != fcntl (connection->socket_fd, F_SETFL, flags | O_NONBLOCK)) )
- @@ -1797,7 +1797,7 @@ static void
- make_nonblocking_noninheritable (struct MHD_Daemon *daemon,
- MHD_socket sock)
- {
- -#ifdef WINDOWS
- +#ifdef MHD_WINSOCK_SOCKETS
- DWORD dwFlags;
- unsigned long flags = 1;
-
- @@ -3611,7 +3611,7 @@ MHD_start_daemon_va (unsigned int flags,
- daemon->socket_fd = MHD_INVALID_SOCKET;
- daemon->listening_address_reuse = 0;
- daemon->options = flags;
- -#if WINDOWS
- +#if defined(MHD_WINSOCK_SOCKETS) || defined(CYGWIN)
- /* Winsock is broken with respect to 'shutdown';
- this disables us calling 'shutdown' on W32. */
- daemon->options |= MHD_USE_EPOLL_TURBO;
- @@ -3650,7 +3650,7 @@ MHD_start_daemon_va (unsigned int flags,
- free (daemon);
- return NULL;
- }
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) &&
- (1 == use_pipe) &&
- (daemon->wpipe[0] >= FD_SETSIZE) )
- @@ -3934,7 +3934,7 @@ MHD_start_daemon_va (unsigned int flags,
- (http://msdn.microsoft.com/en-us/library/ms738574%28v=VS.85%29.aspx);
- and may also be missing on older POSIX systems; good luck if you have any of those,
- your IPv6 socket may then also bind against IPv4 anyway... */
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- const int
- #else
- const char
- @@ -4016,7 +4016,7 @@ MHD_start_daemon_va (unsigned int flags,
- {
- socket_fd = daemon->socket_fd;
- }
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- if ( (socket_fd >= FD_SETSIZE) &&
- (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY)) ) )
- {
- @@ -4121,7 +4121,7 @@ MHD_start_daemon_va (unsigned int flags,
- if ( (daemon->worker_pool_size > 0) &&
- (0 == (daemon->options & MHD_USE_NO_LISTEN_SOCKET)) )
- {
- -#if !defined(WINDOWS) || defined(CYGWIN)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- int sk_flags;
- #else
- unsigned long sk_flags;
- @@ -4140,7 +4140,7 @@ MHD_start_daemon_va (unsigned int flags,
- /* Accept must be non-blocking. Multiple children may wake up
- * to handle a new connection, but only one will win the race.
- * The others must immediately return. */
- -#if !defined(WINDOWS) || defined(CYGWIN)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- sk_flags = fcntl (socket_fd, F_GETFL);
- if (sk_flags < 0)
- goto thread_failed;
- @@ -4150,7 +4150,7 @@ MHD_start_daemon_va (unsigned int flags,
- sk_flags = 1;
- if (SOCKET_ERROR == ioctlsocket (socket_fd, FIONBIO, &sk_flags))
- goto thread_failed;
- -#endif /* WINDOWS && !CYGWIN */
- +#endif /* MHD_WINSOCK_SOCKETS */
-
- /* Allocate memory for pooled objects */
- daemon->worker_pool = malloc (sizeof (struct MHD_Daemon)
- @@ -4182,7 +4182,7 @@ MHD_start_daemon_va (unsigned int flags,
- #endif
- goto thread_failed;
- }
- -#ifndef WINDOWS
- +#ifndef MHD_WINSOCK_SOCKETS
- if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) &&
- (MHD_USE_SUSPEND_RESUME == (flags & MHD_USE_SUSPEND_RESUME)) &&
- (d->wpipe[0] >= FD_SETSIZE) )
- @@ -4343,7 +4343,7 @@ close_all_connections (struct MHD_Daemon
- {
- shutdown (pos->socket_fd,
- (pos->read_closed == MHD_YES) ? SHUT_WR : SHUT_RDWR);
- -#if WINDOWS
- +#if MHD_WINSOCK_SOCKETS
- if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
- (MHD_INVALID_PIPE_ != daemon->wpipe[1]) &&
- (1 != MHD_pipe_write_ (daemon->wpipe[1], "e", 1)) )
- --- a/src/include/microhttpd.h
- +++ b/src/include/microhttpd.h
- @@ -130,7 +130,7 @@ typedef intptr_t ssize_t;
- * Current version of the library.
- * 0x01093001 = 1.9.30-1.
- */
- -#define MHD_VERSION 0x00094200
- +#define MHD_VERSION 0x00094202
-
- /**
- * MHD-internal return code for "YES".
- @@ -194,6 +194,53 @@ typedef SOCKET MHD_socket;
- #endif /* MHD_SOCKET_DEFINED */
-
- /**
- + * Define MHD_NO_DEPRECATION before including "microhttpd.h" to disable deprecation messages
- + */
- +#ifdef MHD_NO_DEPRECATION
- +#define _MHD_DEPR_MACRO(msg)
- +#define _MHD_DEPR_FUNC(msg)
- +#endif /* MHD_NO_DEPRECATION */
- +
- +#ifndef _MHD_DEPR_MACRO
- +#if defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1500
- +/* Stringify macros */
- +#define _MHD_INSTRMACRO(a) #a
- +#define _MHD_STRMACRO(a) _MHD_INSTRMACRO(a)
- +#define _MHD_DEPR_MACRO(msg) __pragma(message(__FILE__ "(" _MHD_STRMACRO(__LINE__)"): warning: " msg))
- +#elif defined(__clang__) || defined (__GNUC_PATCHLEVEL__)
- +#define _MHD_GCC_PRAG(x) _Pragma (#x)
- +#if __clang_major__+0 >= 5 || \
- + (!defined(__apple_build_version__) && (__clang_major__+0 > 3 || (__clang_major__+0 == 3 && __clang_minor__ >= 3))) || \
- + __GNUC__+0 > 4 || (__GNUC__+0 == 4 && __GNUC_MINOR__+0 >= 8)
- +#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG(GCC warning msg)
- +#else /* older clang or GCC */
- +#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG(message msg)
- +#endif
- +/* #elif defined(SOMEMACRO) */ /* add compiler-specific macros here if required */
- +#else /* other compilers */
- +#define _MHD_DEPR_MACRO(msg)
- +#endif
- +#endif /* _MHD_DEPR_MACRO */
- +
- +#ifndef _MHD_DEPR_FUNC
- +#if defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1400
- +#define _MHD_DEPR_FUNC(msg) __declspec(deprecated(msg))
- +#elif defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1310
- +/* VS .NET 2003 deprecation do not support custom messages */
- +#define _MHD_DEPR_FUNC(msg) __declspec(deprecated)
- +#elif defined (__clang__) && \
- + (__clang_major__+0 >= 4 || (!defined(__apple_build_version__) && __clang_major__+0 >= 3))
- +#define _MHD_DEPR_FUNC(msg) __attribute__((deprecated(msg)))
- +#elif defined (__clang__) || __GNUC__+0 > 3 || (__GNUC__+0 == 3 && __GNUC_MINOR__+0 >= 1)
- +/* GCC-style deprecation do not support custom messages */
- +#define _MHD_DEPR_FUNC(msg) __attribute__((__deprecated__))
- +/* #elif defined(SOMEMACRO) */ /* add compiler-specific macros here if required */
- +#else /* other compilers */
- +#define _MHD_DEPR_FUNC(msg)
- +#endif
- +#endif /* _MHD_DEPR_FUNC */
- +
- +/**
- * Not all architectures and `printf()`'s support the `long long` type.
- * This gives the ability to replace `long long` with just a `long`,
- * standard `int` or a `short`.
- @@ -204,6 +251,8 @@ typedef SOCKET MHD_socket;
- */
- #define MHD_LONG_LONG long long
- #define MHD_UNSIGNED_LONG_LONG unsigned long long
- +#else /* MHD_LONG_LONG */
- +_MHD_DEPR_MACRO("Macro MHD_LONG_LONG is deprecated, use MHD_UNSIGNED_LONG_LONG")
- #endif
- /**
- * Format string for printing a variable of type #MHD_LONG_LONG.
- @@ -215,6 +264,8 @@ typedef SOCKET MHD_socket;
- */
- #define MHD_LONG_LONG_PRINTF "ll"
- #define MHD_UNSIGNED_LONG_LONG_PRINTF "%llu"
- +#else /* MHD_LONG_LONG_PRINTF */
- +_MHD_DEPR_MACRO("Macro MHD_LONG_LONG_PRINTF is deprecated, use MHD_UNSIGNED_LONG_LONG_PRINTF")
- #endif
-
-
- @@ -253,7 +304,8 @@ typedef SOCKET MHD_socket;
- #define MHD_HTTP_METHOD_NOT_ALLOWED 405
- #define MHD_HTTP_NOT_ACCEPTABLE 406
- /** @deprecated */
- -#define MHD_HTTP_METHOD_NOT_ACCEPTABLE 406
- +#define MHD_HTTP_METHOD_NOT_ACCEPTABLE \
- + _MHD_DEPR_MACRO("Value MHD_HTTP_METHOD_NOT_ACCEPTABLE is deprecated, use MHD_HTTP_NOT_ACCEPTABLE") 406
- #define MHD_HTTP_PROXY_AUTHENTICATION_REQUIRED 407
- #define MHD_HTTP_REQUEST_TIMEOUT 408
- #define MHD_HTTP_CONFLICT 409
- @@ -1953,6 +2005,7 @@ MHD_create_response_from_callback (uint6
- * @deprecated use #MHD_create_response_from_buffer instead
- * @ingroup response
- */
- +_MHD_DEPR_FUNC("MHD_create_response_from_data() is deprecated, use MHD_create_response_from_buffer()") \
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_data (size_t size,
- void *data,
- @@ -2023,6 +2076,8 @@ MHD_create_response_from_buffer (size_t
- * @return NULL on error (i.e. invalid arguments, out of memory)
- * @ingroup response
- */
- +/* NOTE: this should be 'uint64_t' instead of 'size_t', but changing
- + this would break API compatibility. */
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_fd (size_t size,
- int fd);
- @@ -2044,6 +2099,8 @@ MHD_create_response_from_fd (size_t size
- * @return NULL on error (i.e. invalid arguments, out of memory)
- * @ingroup response
- */
- +/* NOTE: this should be 'uint64_t' instead of 'size_t', but changing
- + this would break API compatibility. */
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_fd_at_offset (size_t size,
- int fd,
- --- a/src/include/platform_interface.h
- +++ b/src/include/platform_interface.h
- @@ -82,14 +82,14 @@
-
-
- /* MHD_socket_close_(fd) close any FDs (non-W32) / close only socket FDs (W32) */
- -#if !defined(_WIN32) || defined(__CYGWIN__)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_close_(fd) close((fd))
- #else
- #define MHD_socket_close_(fd) closesocket((fd))
- #endif
-
- /* MHD_socket_errno_ is errno of last function (non-W32) / errno of last socket function (W32) */
- -#if !defined(_WIN32) || defined(__CYGWIN__)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_errno_ errno
- #else
- #define MHD_socket_errno_ MHD_W32_errno_from_winsock_()
- @@ -97,21 +97,21 @@
-
- /* MHD_socket_last_strerr_ is description string of last errno (non-W32) /
- * description string of last socket error (W32) */
- -#if !defined(_WIN32) || defined(__CYGWIN__)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_last_strerr_() strerror(errno)
- #else
- #define MHD_socket_last_strerr_() MHD_W32_strerror_last_winsock_()
- #endif
-
- /* MHD_strerror_ is strerror (both non-W32/W32) */
- -#if !defined(_WIN32) || defined(__CYGWIN__)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_strerror_(errnum) strerror((errnum))
- #else
- #define MHD_strerror_(errnum) MHD_W32_strerror_((errnum))
- #endif
-
- /* MHD_set_socket_errno_ set errno to errnum (non-W32) / set socket last error to errnum (W32) */
- -#if !defined(_WIN32) || defined(__CYGWIN__)
- +#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_set_socket_errno_(errnum) errno=(errnum)
- #else
- #define MHD_set_socket_errno_(errnum) MHD_W32_set_last_winsock_error_((errnum))
- --- a/src/testcurl/test_digestauth.c
- +++ b/src/testcurl/test_digestauth.c
- @@ -73,7 +73,8 @@ ahc_echo (void *cls,
- const char *url,
- const char *method,
- const char *version,
- - const char *upload_data, size_t *upload_data_size,
- + const char *upload_data,
- + size_t *upload_data_size,
- void **unused)
- {
- struct MHD_Response *response;
- @@ -82,44 +83,47 @@ ahc_echo (void *cls,
- const char *realm = "test@example.com";
- int ret;
-
- - username = MHD_digest_auth_get_username(connection);
- + username = MHD_digest_auth_get_username (connection);
- if ( (username == NULL) ||
- (0 != strcmp (username, "testuser")) )
- {
- - response = MHD_create_response_from_buffer(strlen (DENIED),
- - DENIED,
- - MHD_RESPMEM_PERSISTENT);
- + response = MHD_create_response_from_buffer (strlen (DENIED),
- + DENIED,
- + MHD_RESPMEM_PERSISTENT);
- ret = MHD_queue_auth_fail_response(connection, realm,
- MY_OPAQUE,
- response,
- - MHD_NO);
- - MHD_destroy_response(response);
- + MHD_NO);
- + MHD_destroy_response(response);
- return ret;
- }
- ret = MHD_digest_auth_check(connection, realm,
- - username,
- - password,
- + username,
- + password,
- 300);
- free(username);
- if ( (ret == MHD_INVALID_NONCE) ||
- (ret == MHD_NO) )
- {
- - response = MHD_create_response_from_buffer(strlen (DENIED),
- + response = MHD_create_response_from_buffer(strlen (DENIED),
- DENIED,
- - MHD_RESPMEM_PERSISTENT);
- - if (NULL == response)
- + MHD_RESPMEM_PERSISTENT);
- + if (NULL == response)
- return MHD_NO;
- ret = MHD_queue_auth_fail_response(connection, realm,
- MY_OPAQUE,
- response,
- - (ret == MHD_INVALID_NONCE) ? MHD_YES : MHD_NO);
- - MHD_destroy_response(response);
- + (ret == MHD_INVALID_NONCE) ? MHD_YES : MHD_NO);
- + MHD_destroy_response(response);
- return ret;
- }
- - response = MHD_create_response_from_buffer(strlen(PAGE), PAGE,
- - MHD_RESPMEM_PERSISTENT);
- - ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
- - MHD_destroy_response(response);
- + response = MHD_create_response_from_buffer (strlen(PAGE),
- + PAGE,
- + MHD_RESPMEM_PERSISTENT);
- + ret = MHD_queue_response (connection,
- + MHD_HTTP_OK,
- + response);
- + MHD_destroy_response (response);
- return ret;
- }
-
- @@ -144,24 +148,24 @@ testDigestAuth ()
- fd = open("/dev/urandom", O_RDONLY);
- if (-1 == fd)
- {
- - fprintf(stderr, "Failed to open `%s': %s\n",
- - "/dev/urandom",
- - strerror(errno));
- - return 1;
- - }
- + fprintf(stderr, "Failed to open `%s': %s\n",
- + "/dev/urandom",
- + strerror(errno));
- + return 1;
- + }
- while (off < 8)
- - {
- - len = read(fd, rnd, 8);
- - if (len == -1)
- - {
- - fprintf(stderr, "Failed to read `%s': %s\n",
- - "/dev/urandom",
- - strerror(errno));
- - (void) close(fd);
- - return 1;
- - }
- - off += len;
- - }
- + {
- + len = read(fd, rnd, 8);
- + if (len == -1)
- + {
- + fprintf(stderr, "Failed to read `%s': %s\n",
- + "/dev/urandom",
- + strerror(errno));
- + (void) close(fd);
- + return 1;
- + }
- + off += len;
- + }
- (void) close(fd);
- #else
- {
- @@ -193,7 +197,7 @@ testDigestAuth ()
- if (d == NULL)
- return 1;
- c = curl_easy_init ();
- - curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/");
- + curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/bar%20 foo?a=bü%20");
- curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
- curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
- curl_easy_setopt (c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
- @@ -225,7 +229,6 @@ testDigestAuth ()
- }
-
-
- -
- int
- main (int argc, char *const *argv)
- {
- --- a/src/testcurl/https/test_https_time_out.c
- +++ b/src/testcurl/https/test_https_time_out.c
- @@ -64,7 +64,7 @@ test_tls_session_time_out (gnutls_sessio
-
- gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) (intptr_t) sd);
-
- - ret = connect (sd, &sa, sizeof (struct sockaddr_in));
- + ret = connect (sd, (struct sockaddr *) &sa, sizeof (struct sockaddr_in));
-
- if (ret < 0)
- {
|