gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r36220 - libmicrohttpd/src/microhttpd


From: gnunet
Subject: [GNUnet-SVN] r36220 - libmicrohttpd/src/microhttpd
Date: Fri, 7 Aug 2015 09:37:57 +0200

Author: Karlson2k
Date: 2015-08-07 09:37:57 +0200 (Fri, 07 Aug 2015)
New Revision: 36220

Modified:
   libmicrohttpd/src/microhttpd/MHD_limits.h
   libmicrohttpd/src/microhttpd/connection.c
Log:
connection.c: MHD_connection_handle_write(): check for limits, fix compiler 
warning

Modified: libmicrohttpd/src/microhttpd/MHD_limits.h
===================================================================
--- libmicrohttpd/src/microhttpd/MHD_limits.h   2015-08-06 15:45:32 UTC (rev 
36219)
+++ libmicrohttpd/src/microhttpd/MHD_limits.h   2015-08-07 07:37:57 UTC (rev 
36220)
@@ -37,6 +37,10 @@
 #define INT32_MAX ((int32_t)0x7FFFFFFF)
 #endif /* !INT32_MAX */
 
+#ifndef SIZE_MAX
+#define SIZE_MAX ((size_t) ~((size_t)0))
+#endif /* !SIZE_MAX */
+
 #ifndef OFF_T_MAX
 #define OFF_T_MAX ((off_t) ~(((uint64_t) 1) << (8 * sizeof(off_t) - 1)))
 #endif /* !OFF_T_MAX */

Modified: libmicrohttpd/src/microhttpd/connection.c
===================================================================
--- libmicrohttpd/src/microhttpd/connection.c   2015-08-06 15:45:32 UTC (rev 
36219)
+++ libmicrohttpd/src/microhttpd/connection.c   2015-08-07 07:37:57 UTC (rev 
36220)
@@ -2133,18 +2133,22 @@
           if (connection->response_write_position <
               connection->response->total_size)
           {
+            int err;
+            uint64_t data_write_offset;
             if (NULL != response->crc)
               (void) MHD_mutex_lock_ (&response->mutex);
             if (MHD_YES != try_ready_normal_body (connection))
               break;
+            data_write_offset = connection->response_write_position
+                                - response->data_start;
+            if (data_write_offset > (uint64_t)SIZE_MAX)
+              MHD_PANIC("Data offset exceeds limit");
             ret = connection->send_cls (connection,
                                         &response->data
-                                        [connection->response_write_position
-                                         - response->data_start],
+                                        [(size_t)data_write_offset],
                                         response->data_size -
-                                        (connection->response_write_position
-                                         - response->data_start));
-            const int err = MHD_socket_errno_;
+                                        (size_t)data_write_offset);
+            err = MHD_socket_errno_;
 #if DEBUG_SEND_DATA
             if (ret > 0)
               fprintf (stderr,




reply via email to

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