aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2015-08-08 12:29:51 +0000
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2015-08-08 12:29:51 +0000
commit9d58eaee1f474a1bccf7f0b9ae2328b0227950ac (patch)
tree516ef3ae726dcda58303a6c77fc929812b358057 /src
parentca715348d35207dc14695b5b20acb3305e7b294d (diff)
downloadlibmicrohttpd-9d58eaee1f474a1bccf7f0b9ae2328b0227950ac.tar.gz
libmicrohttpd-9d58eaee1f474a1bccf7f0b9ae2328b0227950ac.zip
daemon.c: MHD_get_timeout(): check for value overflow
Diffstat (limited to 'src')
-rw-r--r--src/microhttpd/MHD_limits.h4
-rw-r--r--src/microhttpd/daemon.c8
2 files changed, 11 insertions, 1 deletions
diff --git a/src/microhttpd/MHD_limits.h b/src/microhttpd/MHD_limits.h
index d7ceb9f2..2236b08e 100644
--- a/src/microhttpd/MHD_limits.h
+++ b/src/microhttpd/MHD_limits.h
@@ -36,6 +36,10 @@
36#define LONG_MAX ((long) ~(((uint64_t) 1) << (8 * sizeof(long) - 1))) 36#define LONG_MAX ((long) ~(((uint64_t) 1) << (8 * sizeof(long) - 1)))
37#endif /* !OFF_T_MAX */ 37#endif /* !OFF_T_MAX */
38 38
39#ifndef ULLONG_MAX
40#define ((MHD_UNSIGNED_LONG_LONG) ~((MHD_UNSIGNED_LONG_LONG)0))
41#endif /* !ULLONG_MAX */
42
39#ifndef INT32_MAX 43#ifndef INT32_MAX
40#define INT32_MAX ((int32_t)0x7FFFFFFF) 44#define INT32_MAX ((int32_t)0x7FFFFFFF)
41#endif /* !INT32_MAX */ 45#endif /* !INT32_MAX */
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 7807dab9..9a94bd92 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -2179,7 +2179,13 @@ MHD_get_timeout (struct MHD_Daemon *daemon,
2179 if (earliest_deadline < now) 2179 if (earliest_deadline < now)
2180 *timeout = 0; 2180 *timeout = 0;
2181 else 2181 else
2182 *timeout = 1000 * (1 + earliest_deadline - now); 2182 {
2183 const time_t second_left = earliest_deadline - now;
2184 if (second_left > ULLONG_MAX / 1000)
2185 *timeout = ULLONG_MAX;
2186 else
2187 *timeout = 1000 * second_left;
2188 }
2183 return MHD_YES; 2189 return MHD_YES;
2184} 2190}
2185 2191