gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r36229 - in libmicrohttpd/src: include microhttpd


From: gnunet
Subject: [GNUnet-SVN] r36229 - in libmicrohttpd/src: include microhttpd
Date: Sat, 8 Aug 2015 14:29:44 +0200

Author: Karlson2k
Date: 2015-08-08 14:29:43 +0200 (Sat, 08 Aug 2015)
New Revision: 36229

Modified:
   libmicrohttpd/src/include/platform.h
   libmicrohttpd/src/microhttpd/MHD_limits.h
   libmicrohttpd/src/microhttpd/daemon.c
Log:
daemon.c: MHD_handle_connection(): check timeout value for overflow of W32

Modified: libmicrohttpd/src/include/platform.h
===================================================================
--- libmicrohttpd/src/include/platform.h        2015-08-08 12:29:34 UTC (rev 
36228)
+++ libmicrohttpd/src/include/platform.h        2015-08-08 12:29:43 UTC (rev 
36229)
@@ -189,6 +189,12 @@
 #define MHD_SOCKET_DEFINED 1
 #endif /* MHD_SOCKET_DEFINED */
 
+#ifndef _WIN32
+typedef time_t _MHD_TIMEVAL_TV_SEC_TYPE;
+#else  /* _WIN32 */
+typedef long _MHD_TIMEVAL_TV_SEC_TYPE;
+#endif /* _WIN32 */
+
 /* Force don't use pipes on W32 */
 #if defined(_WIN32) && !defined(MHD_DONT_USE_PIPES)
 #define MHD_DONT_USE_PIPES 1

Modified: libmicrohttpd/src/microhttpd/MHD_limits.h
===================================================================
--- libmicrohttpd/src/microhttpd/MHD_limits.h   2015-08-08 12:29:34 UTC (rev 
36228)
+++ libmicrohttpd/src/microhttpd/MHD_limits.h   2015-08-08 12:29:43 UTC (rev 
36229)
@@ -32,6 +32,9 @@
 #include <limits.h>
 #endif /* HAVE_LIMITS_H */
 
+#ifndef LONG_MAX
+#define LONG_MAX ((long) ~(((uint64_t) 1) << (8 * sizeof(long) - 1)))
+#endif /* !OFF_T_MAX */
 
 #ifndef INT32_MAX
 #define INT32_MAX ((int32_t)0x7FFFFFFF)
@@ -49,5 +52,18 @@
 #define OFF64_T_MAX ((off64_t) ~(((uint64_t) 1) << (8 * sizeof(off64_t) - 1)))
 #endif /* _LARGEFILE64_SOURCE && !OFF64_T_MAX */
 
+#ifndef TIME_T_MAX
+/* Assume that time_t is signed type. */
+/* Even if time_t is unsigned, TIME_T_MAX will be safe limit */
+#define TIME_T_MAX ( (time_t) ~(((uint64_t) 1) << (8 * sizeof(time_t) - 1)) )
+#endif /* !TIME_T_MAX */
 
+#ifndef TIMEVAL_TV_SEC_MAX
+#ifndef _WIN32
+#define TIMEVAL_TV_SEC_MAX TIME_T_MAX
+#else  /* _WIN32 */
+#define TIMEVAL_TV_SEC_MAX LONG_MAX
+#endif /* _WIN32 */
+#endif /* !TIMEVAL_TV_SEC_MAX */
+
 #endif /* MHD_LIMITS_H */

Modified: libmicrohttpd/src/microhttpd/daemon.c
===================================================================
--- libmicrohttpd/src/microhttpd/daemon.c       2015-08-08 12:29:34 UTC (rev 
36228)
+++ libmicrohttpd/src/microhttpd/daemon.c       2015-08-08 12:29:43 UTC (rev 
36229)
@@ -825,8 +825,18 @@
          now = MHD_monotonic_time();
          if (now - con->last_activity > timeout)
            tv.tv_sec = 0;
-         else
-           tv.tv_sec = timeout - (now - con->last_activity);
+          else
+            {
+              const time_t seconds_left = timeout - (now - con->last_activity);
+#ifndef _WIN32
+              tv.tv_sec = seconds_left;
+#else  /* _WIN32 */
+              if (seconds_left > TIMEVAL_TV_SEC_MAX)
+                tv.tv_sec = TIMEVAL_TV_SEC_MAX;
+              else
+                tv.tv_sec = (_MHD_TIMEVAL_TV_SEC_TYPE)seconds_left;
+#endif /* _WIN32 */
+            }
          tv.tv_usec = 0;
          tvp = &tv;
        }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]